一、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. uva-10700-贪心

    题意:对于一个只有加法和乘法的序列,没有加法和乘法的优先级,问,结果最大值和最小值是多少,数字范围 1<=N <= 20 解题思路: (A+B)*C - (A+(B*C)) = AC + ...

  2. mysql安装卸载-windows

     安装:(注意点) 官网download安装包 choose setup type --> custom 安装路径 detailed configuration developer machin ...

  3. 51.纯 CSS 创作一个雷达扫描动画

    原文地址:https://segmentfault.com/a/1190000015283286 感想:linear-gradient() 刷新了我的认知,它可以并列多个而不会被覆盖,并列使用时用 , ...

  4. scrapy执行流程

    def _next_request_from_scheduler(self, spider): fetch一个request,调用http11 handler,client的agent,返回的是def ...

  5. otter 数据同步

    阿里巴巴分布式数据库同步系统(解决中美异地机房) 基本介绍: https://github.com/alibaba/otter 快速使用: https://github.com/alibaba/ott ...

  6. java 构造json对象数组

    利用for构造 import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class Test { pub ...

  7. 【ASP.NET 进阶】判断访问网站的客户端是PC还是手机

    主要就是通过客户端传递的User-agent来判断访问网站的客户端是PC还是手机,.NET中就是Request.ServerVariables["HTTP_USER_AGENT"] ...

  8. leetcode990

    class Finder: def __init__(self): self.Parent = [i for i in range(26)] def union(self, p, q): self.P ...

  9. THML DOM / Element 对象操作

    随着Vue等MVVM框架流行,操作DOM已经不想之前那么频繁,因此很多DOM的操作已经陌生,特此回顾HTML中DOM操作 获取Element节点 熟悉的有 通过ID获取,返回element对象    ...

  10. delphi 控件编辑器

    控件编辑器和属性编辑器类似 http://www.rgzz.sdedu.net/ebook/hdbook/computer/bc/delphizhuanti/rmjq/028.htm TCommonD ...