package io;

import java.io.FileInputStream;
import java.io.IOException; public class IOUtil { /**
* 读取指定文件内容,按照16进制输出到控制台,为什么要按十六进制?
* 并且每输出10个byte换行
* @throws IOException
*/
public static void printHex(String filename) throws IOException{
//把文件作为字节流进行读操作
FileInputStream in = new FileInputStream(filename);//FileInputStream具体实现了在文件上读取数据
int b;
int i=1;
while((b=in.read())!=-1)//b=in.read()这就是程序核心
{
System.out.println(Integer.toHexString(b)+" ");//将整型b转换成16进制表示的字符串?输出
if(i++%10==0)
{
System.out.println();//每隔十个字节换行
}
}
in.close();
} }

思想就是:利用new FileInputStream(filename)把一个文件放入到一个输入流对象in中,调用in.read()方法来逐个字节读取(下面read源码),读取输入流一个字节的数据,返回一个整型int(那么是不是十六进制的整型呢?)。

再调用Integer.toHexString(b)方法将存在b的为int的一个字节的数据转换成一个字符串,然后输出。

总体原理就是,将一篇字符串 放入流进行单个字节的整型读取,然后再转换回字符串单个输出。

    /**
* Reads a byte of data from this input stream. This method blocks
* if no input is yet available.
*
* @return the next byte of data, or <code>-1</code> if the end of the
* file is reached.
* @exception IOException if an I/O error occurs.
*/
public int read() throws IOException {
return read0();
} private native int read0() throws IOException;

//把文件作为字节流进行读操作
FileInputStream in = new FileInputStream(filename);//FileInputStream具体实现了在文件上读取数据

FileInputStream 原理总结 把文件作为字节流进行读操作的更多相关文章

  1. FileInputStream 把文件作为字节流进行读操作

    //把文件作为字节流进行读操作 FileInputStream in = new FileInputStream(filename);//FileInputStream具体实现了在文件上读取数据

  2. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  3. 2016-9-6 批量给文件名的前面加上“igeek_高薪就业” 2、 利用FileInputStream和FileOutputStream复制文件

    在此只列出典型题目,有的题目扫一眼就有代码的不去浪费时间了,想要完整题目的评论留邮箱,看到就发.持续更新中... 1.批量给文件名的前面加上“igeek_高薪就业” package com.work; ...

  4. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  5. SSH原理与运用(二):远程操作与端口转发

    SSH原理与运用(二):远程操作与端口转发 作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一 ...

  6. C#路径,文件,目录,I/O常见操作

         C#路径,文件,目录,I/O常见操作 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供 ...

  7. java文件操作(普通文件以及配置文件的读写操作)

    转自:java文件操作(普通文件以及配置文件的读写操作) 读取普通文件 : /** * xiangqiao123欢迎你 如果对代码有疑问可以加qq群咨询:151648295 * * 读取MyFile文 ...

  8. JAVA文件操作工具类(读、增、删除、复制)

    使用JAVA的JFinal框架 1.上传文件模型类UploadFile /** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * ...

  9. [转帖]SSH原理与运用(二):远程操作与端口转发

    SSH原理与运用(二):远程操作与端口转发 http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 接着前一次的文章,继续介绍S ...

随机推荐

  1. publish over ssh 实现 Jenkins 远程部署

    Jenkins远程部署,一开始没有任何头绪,想了很多方案. 因为两台机器都是windows系统,所以想到publish over cifs, 但是这个网上资料太少,貌似只能内网使用.又想到了Jenki ...

  2. 07 在Windows下编译Memcached

    一:windows下编译Memcached (1)下载地址dll:http://down.51cto.com/data/442606 (2)在php下输出 echo phpinfo():查看php的版 ...

  3. 一定要搜藏的20个非常有用的PHP类库

    一定要搜藏的20个非常有用的PHP类库 本文提供了20个非常有用的PHP类库的名称和下载地址.这20个PHP类库包含了图标库,RSS解析,缩略图生成,支付,OpenID,数据库抽象,PDF生成器等一系 ...

  4. umbraco v7.6.4 surface controller not found 大深坑!

    注意在修改后台地址过程中对于web.config里的umbracoPath 如果你改成了~/admin,surface controller的路由就变成了 /admin/surface/{contro ...

  5. ASP.NET动态网站制作(21)-- C#(4)

    前言:这节课是C#讲解的第四节课,主要围绕面向对象的三大特性展开.上节课已经把封装讲完了,这节课讲继承和多态. 内容: 1.继承:写程序的时候有些信息是公共的,可以将这些公共的信息写在父类里,增强代码 ...

  6. 安装android Studio和运行react native项目(基础篇)

    ANDROID_HOME环境变量 确保ANDROID_HOME环境变量正确地指向了你安装的Android SDK的路径. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设 ...

  7. python 函数的进阶

    1. 动态参数 位置参数的动态参数: *args 动态接收参数的时候要注意: 动态参数必须在位置参数后面 顺序: 位置参数, 动态参数*, 默认值参数 例子: def chi(a, b, *food, ...

  8. maven;spring;pom

    [说明]因为对环境配置文件理解的不充分,遇到问题经常是无法独自解决,特别是maven和javaweb的转换,也是糊里糊涂的,今天就又出问题了. [说明] 一:今日完成 1)任务二的效果展示看的我一脸懵 ...

  9. python cookbook第三版学习笔记十六:抽象基类

    假设一个工程中有多个类,每个类都通过__init__来初始化参数.但是可能有很多高度重复且样式相同的__init__.为了减少代码.我们可以将初始化数据结构的步骤归纳到一个单独的__init__函数中 ...

  10. LDA中的先验知识

    LDA涉及到的先验知识有:二项分布.Gamma函数.Beta分布.多项分布.Dirichlet分布.马尔科夫链.MCMC.Gibbs Sampling.EM算法等. 二项分布 二项分布是N重伯努利分布 ...