一、Java读取和存储文件数据流

Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程
 
这里面涉及到两个类:InputStreamReader和OutputStreamWriter
InputStreamReader:将字节流转换成字符流
OutputStreamWriter:将字符流转换成字节流
 
InputStreamReader继承Reader类
OutputStreamWriter继承Writer类
 

二、BufferedReader/FileReader/InputStreamReader

Reader是用于将文件中的内容读出来;Writer用于将字符写入到文件中去。
Reader是用于读取字符流的抽象类

1、BufferedReader/FileReader/InputStreamReader的继承关系如下:

所以通过BufferedReader/FileReader/InputStreamReader这三个方法读出来的文件,都可以直接输出字符

2、BufferedReader/FileReader/InputStreamReader的使用方法及区别

InputStreamReader:可以指定字符编码格式,入参传递InputStream对象
InputStream对象定义方法有两种。System.in或FileInputStream对象
System.in:读取控制台的输入内容
FileInputStream:可通过文件路径名pathname或File对象实例化
InputStreamReader inputstreamreader1=new InputStreamReader(System.in);
InputStreamReader inputstreamreader2=new InputStreamReader(new FileInputStream("/opt/xxx"));
InputStreamReader inputstreamreader3=new InputStreamReader(new FileInputStream(new File("/opt/xxx")));
 
FileReader:入参直接传递文件pathname或File对象
FileReader是InputStreamReader的子类,不能指定字符编码,其他与InputStreamReader基本类似
FileReader f1=new FileReader("/opt/xxx.txt");
FileReader f2=new FileReader(new File("/opt/xxx.txt"));
BufferedReader:入参有Reader对象和缓冲区大小(可不写)
从缓存区中读取字符流,提高效率;缓冲区大小:默认8192,默认不需要传递
建议都要用这个类去读取文件
BufferedReader buffered_filereader=new BufferedReader(new FileReader(filename));
BufferedReader buffered_inputstreamreader=new BufferedReader(new InputStreamReader(fileinputstream));
 

三、FileInputStream

所有字节输入流的超类,用于字节流的读取。
上面已经讲了,应用在实例化InputStreamReader对象时的一种入参
 
可以传递文件路径名pathname或File对象实例化
 

四、读取文件

BufferedReader对象使用readLine()方法判断字符串是否为null判断是否为文件末尾
String read;
while((read=buffered_filereader.readLine())!=null){
System.out.println(read);
}
 
Reader子类InputSteamReader和FileReader使用read()方法判断是否为-1,来判断是否为文件末尾
int i;
while ((i=filereader.read())!=-1){
System.out.print((char)i);
}
 

五、Java代码

1、InputSteamReader
String filename="/opt/xxx.log";

FileInputStream fileinputstream=new FileInputStream(filename);
InputStreamReader inputstreamreader=new InputStreamReader(fileinputstream);
int i;
while ((i=inputstreamreader.read())!=-1){
System.out.print((char)i);
}
 
2、FileReader
String filename="/opt/xxx.log";

FileReader filereader=new FileReader(filename);
int i;
while ((i=filereader.read())!=-1){
System.out.print((char)i);
}
 
3、BufferedReader(入参FileReader)
String filename="/opt/xxx.log";

FileReader filereader=new FileReader(filename);
BufferedReader buffered_filereader=new BufferedReader(filereader);
String read;
while((read=buffered_filereader.readLine())!=null){
System.out.println(read);
}
 
4、BufferedReader(入参InputStreamReader)
String filename="/opt/xxx.log";
FileInputStream fileinputstream=new FileInputStream(filename);
InputStreamReader inputstreamreader=new InputStreamReader(fileinputstream);
BufferedReader buffered_inputstreamreader=new BufferedReader(inputstreamreader);
String read;
while((read=buffered_inputstreamreader.readLine())!=null){
System.out.println(read);
}

Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别的更多相关文章

  1. [Java]读取文件方法大全(转)

    [Java]读取文件方法大全   1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {     /**     ...

  2. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  3. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...

  4. java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)

    1.实现目标 读取文件,将文件中的数据一行行的取出. 2.代码实现 1).方式1: 通过BufferedReader的readLine()方法. /** * 功能:Java读取txt文件的内容 步骤: ...

  5. Java读取文件方法和给文件追加内容

    本文转载自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文 ...

  6. java的new BufferedReader(new InputStreamReader(System.in))

    流 JAVA /IO 基本小结 通过一行常见的代码讨论:new BufferedReader(new InputStreamReader(System.in)) /*** *** 看到这篇文章挺好的, ...

  7. java读取文件方法总结

    由于最近在做一个关于从手机本地读取格式化的txt文件中的内容,并且把内容放在listview中显示.这样问题来了,就是如何能够遍历已经获取到特定的map中就是一个问题,在网上找了一些资料,找到了一个很 ...

  8. java 读取文件的路径

    1. 通用定位到用户目录下:   String userDir = System.getProperty("user.dir"); 2. web项目定位到WEB-INF/class ...

  9. java 读取文件乱码

    private void filereader() throws IOException{  BufferedReader bf= new BufferedReader(new InputStream ...

随机推荐

  1. 重识linux-linux系统服务相关

    重识linux-linux系统服务相关 1 tcp wrappers 特殊功能  应用级防火墙 2 系统开启的服务查看 top,ps 命令 3 查看系统启动的服务 1) 找到目前系统开启的网络服务 n ...

  2. python操作浏览器及截图小结

    近期做网页自动化用到内容小结 1.打开浏览器1)打开默认配置的浏览器from selenium import webdriverdriver = webdriver.Firefox()"&q ...

  3. MonGoDB 常见操作, 设置管理员和用户登入

    [ 启动客户端 => ./bin/mongo --host 192.168.200.100 ] 1: 查看所有已经创建的数据库  =>  show dbs   2: 切换或者创建数据库   ...

  4. Mac安装Mysql-python _mysql.c:44:10: fatal error: 'my_config.h' file not found

    解决步骤 brew install mysql brew unlink mysql brew install mysql-connector-c sed -i -e /bin/mysql_config ...

  5. 多媒体基础知识之PCM数据《 转》

    多媒体基础知识之PCM数据 1.什么是PCM音频数据 PCM(Pulse Code Modulation)也被称为脉冲编码调制.PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样.量化 ...

  6. ABAP-权限查询-用户信息系统

    事务代码:SUIM

  7. 24_ajax请求_使用axios

    前置说明: 1.React本身只关注页面,并不包含发送ajax请求的代码 2.前端应用需要通过ajax请求与后台进行交互(json数据) 3.React应用中需要集成第三方ajax库(或自己进行封装) ...

  8. mui页面交互

    1.页面a准备函数 function hideBackBtn() { // $('.menua').removeClass('mui-icon-back').addClass('mui-icon-ba ...

  9. Delphi中TApplication详解(转仅供自己参考)

    转自:http://blog.sina.com.cn/s/blog_4d6f55d90100bmv9.html TApplication是用于Delphi应用程序的类型,该类在单元forms中声明.T ...

  10. VS2017断点调试UNITY2018.3 经常卡住的问题

    发现了VS下断点经常导致unity卡住的原因,是vs占用CPU太高导致的,这其中又是vs service hub 造成的,这个除了在代码中提示各函数引用之外好像没什么用,我定位到它的安装目录,删除了配 ...