`
新来的菜鸟
  • 浏览: 130823 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别

 
阅读更多

1. File
  
1
File 类介绍(《 core java 638 页)

File 类封装了对用户机器的文件系统进行操作的功能。例如,可以用 File 类获得文件上次修改的时间移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储。

File 类的主要方法有: getName(),getCanonicalFile(),lastModified(),isDerecto(),isFile(),getPath() 等;

2 File 类与 FileInputStream 类的区别:

 

流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储。

 

File 不属于文件流 , 只能代表一个文件或是目录的路径名而已。

如果处理文件或者目录名,就应该使用 File 对象,而不是字符串。

2.       FileInputStream

1 FileInputStream 类介绍:

以字节为单位(非 unicode )的流处理。字节序列即:二进制数据。与编码无关,不存在乱码问题。

FileInputStream 类的主要方法有:

Read (), read byte[] b ), read byte[],int off,int len ,available();

 

2 FileInputStream 类与 FileReader 类的区别:

两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,它们到底有何区别

呢?

FileInputStream :以字节流方式读取; FileReader :把文件转换为字符流读入;
InputStream
提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出

来的是char数组或者String ,使用InputStream读取出来的是byte数组。


Reader
类及其子类提供的字符流的读取char16,unicode编码),inputStream及其子类提供字节

流的读取byte8位),所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方

式读取文件;InputStreamReader可以将读如stream转换成字符流方式,是readerstream之间的桥梁.


最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了ReaderWriter两个类。
  

FileInputStream 类以二进制输入 / 输出, I/O 速度快且效率搞,但是它的 read ()方法读到

的是一个字节(二进制数据),很不利于人们阅读。     FileReader 类弥补了这个缺陷,可以以文本格式输入 / 输出,非常方便;

比如可以使用while((ch = filereader.read())!=-1 ) 循环来读取文件;可以使用 BufferedReader readLine() 方法一行一行的读取文本。

当我们读写文本文件的时候,采用 Reader 是非常方便的,比如 FileReader InputStreamReader BufferedReader 。其中最重要的类是 InputStreamReader ,它是字节转换为字符的桥

梁。 你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如

GBK . FileReader InputStreamReader 涉及编码转换 ( 指定编码方式或者采用 os 默认编码 ) ,可

能在不同的平台上出现乱码现象!而 FileInputStream 以二进制方式处理,不会出现乱码现象 .

3 )如果处理纯文本文件,建议使用 FileReader ,因为更方便,也更适合阅读;但是要注意编码问题!
其他情况(处理非纯文本文件),FileInputStream是唯一的选择;FileInputStream是进Socket通讯时会

用到很多,如将文件流是Stream的方式传向服务器!
  
3.       FileReader

1    FileReader 类介绍:

InputStreamReader 类的子类,所有方法( read ()等)都从父类 InputStreamReader 中继承而来;

2    InputStreamReader 的区别:

该类与它的父类 InputStreamReader 的主要不同在于构造函数,主要区别也就在于构造函数!从

InputStreamReader 的构造函数中看到,参数为 InputStream 和编码方式,可以看出,当要指定编码方式时,必须使用 InputStreamReader 类;而 FileReader 构造函数的参数与 FileInputStream 同,为 File 对象或表示 path String ,可以看出,当要根据 File 对象或者 String 读取一个文件时,用 FileReader ;我想 FileReader 子类的作用也就在于这个小分工吧。

3    一般用法:

FileReader fr = new FileReader("ming.txt");
   char[] buffer = new char[1024];
  
int ch = 0;
  
while((ch = fr.read())!=-1 )
  
{
   
System.out.print((char)ch);
   }

4.       InputStreamReader

以文本格式输入 / 输出,可以指定编码格式;

主要方法:

getEncoding ()read();

一般用法:

InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
   while((ch = isr.read())!=-1)
  
{
   
System.out.print((char)ch);
   }

5. BufferedReader

BufferedReader Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine

读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。
一般用法:
    
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
  String data = null;
  
while((data = br.readLine())!=null)
  
{
   
System.out.println(data);
  }

分享到:
评论

相关推荐

    java io 类 小结 代码

    代码直接使用 InputStream OutputStream Reader Writer FileInputStream FileOutputStream FileReader FileWriter InputStreamReader OutputStreamWriter BufferedReader BufferedWriter ...

    Java文件读写操作函数实现

    * 操作可能开销很高的 Reader(如 FileReader和 InputStreamReader)。 * BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象 * ,来创建一个BufferedReader对象,之所以这样做是因为...

    IO输入输出体系.rar

    BufferedReader in = new BufferedReader(new FileReader("Car.java")); BufferedWriter out = new BufferedWriter(new FileReader("Car2.java")); 利用缓冲流读取的时候是逐行读取 存入字符串 in.readLine() out....

    IO流各个类的使用方法

    介绍了,下面这些类的具体使用方法,非常详细,值得一看 File FileFilter RandomAccessFile 【字节流】 InputStream OutputStream FileInputStream FileOutputStream DataInputStream DataOutputStream ...

    跟汤老师学Java(第15季):I/O输入输出流

     Reader:FileReader、BufferedReader、InputStreamReader  Writer:FileWriter、BufferedWriter / PrintWriter、OutputStreamWriter 6.随机读写流  RandomAccessFile 教学全程采用笔记+代码案例的形式讲解,...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、FileInputStream、OutputStream...

    JAVA程序中FTP的连接以及上传文件

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io....

    JavaIo流分析图

    包括InputStream、OutputStream、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、FileWriter、...

    JavaIO流精讲上

    File类概述、File类功能讲解、JAVA IO流概述、字节流、字符流、缓冲流、InputStream、OutputStream、Reader、Writer、FileInputStream、FileOutputStream、InputStreamReader、OutputStreamWriter、FileReader、...

    Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader...

    JDK_API_1_6

    InputStreamReader InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。 LineNumberInputStream 已过时。 此类错误假定字节能充分表示字符。 LineNumberReader 跟踪...

    Java之IO流学习总结

    功能和使用和OutputStream 极其类似,后面会有它们的对应图。 6.字符流的输入与输出的对应 7.字符流与字节流转换 转换流的特点: 其是字符流和字节流之间的桥梁 可对读取到的字节数据经过指定编码转换成字符...

    ReadWriteTxt.java

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io....

    Java使用字符流拷贝文件出现乱码

    Java代码   // BufferedReader in = null; // BufferedWriter out = null;... Reader in = null;... // in = new BufferedReader(new InputStreamReader(new FileInputStream(sr

    java经典面试2010集锦100题(不看你后悔)

    B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...

    java编程基础,应用与实例

    13.2.2 FileInputStream类与FileOutputStream类 184 13.3 filter stream 186 13.4 字符流(character streams) 190 13.4.1 InputStreamReader、OutputStreamWriter 191 13.4.2 BufferedReader与...

Global site tag (gtag.js) - Google Analytics