Java中的FileInputStream,FileOutputStram,BufferedWriter

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的FileInputStream,FileOutputStram,BufferedWriter相关的知识,希望对你有一定的参考价值。

FileInputStream,FileOutputStram,BufferedWriter的作用,区别是什么?尽量详细一点,谢谢!!!!

1、public class FileInputStream extends InputStream FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
2、public class FileOutputStream extends OutputStream 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。 3、public class BufferedWriter extends Writer 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。
该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符(\'\\n\') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。
参考技术A 他们都是一个“流类”,相信楼主对JAVA有所了解,所谓“流类” 顾名思义,就是跟数据流有关系的类。楼主说的FileInputSteam、FileOutputStream和BufferedWriter虽然都是“流类”,但是却属于两个不同的大类。这里建议楼主有必要区分一下。FileInputSteam和FileOutputStream是属于“字节流”类,但却都是用来处理File储存类型的文件的。而BufferedWriter属于“字符流”类。处理对象是“纯文本”(记事本里的文字)对象等。希望对你有帮助,不懂还可以再提问。。 参考技术B 读取的方式不一样大小不一样 流的用的用法大致是这样的 你打开一个文件 你建立一个链接 你只能用一个字符或者字节 你这样读起来很不爽 你就再在它的外面套一个管子 让它缓冲一下 然后你就 在外面套的这个可以直接读取 一行 或者更多

FileInputStream

java.io 

Class FileInputStream

java.lang.Object

     技术分享java.io.InputStream

        技术分享java.io.FileInputStream

所有已实现的接口:

         Closeable


public class FileInputStream extends InputStream

 

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。

FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader


构造方法摘要
FileInputStream(File file)
          通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(FileDescriptor fdObj)
          通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。
FileInputStream(String name)
          通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

 

方法摘要
 int available()
          返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
 void close()
          关闭此文件输入流并释放与此流有关的所有系统资源。
protected  void finalize()
          确保在不再引用文件输入流时调用其 close 方法。
 FileChannel getChannel()
          返回与此文件输入流有关的唯一 FileChannel 对象。
 FileDescriptor getFD()
          返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此 FileInputStream 使用。
 int read()
          从此输入流中读取一个数据字节。读到文件末尾返回-1。
 int read(byte[] b)
          从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
 int read(byte[] b, int off, int len)
          从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
 long skip(long n)
          从输入流中跳过并丢弃 n 个字节的数据。

 

读文件实例

try{
FileInputStream fis = new FileInputStream("file.txt"); //创建一个长度为1024的内存空间,1024足够大,可以一次将文件读取完,不会出现中文注释乱码问题 byte[] buf = new byte[1024]; //用于保存实际读取的字节数 int len = 0; //使用循环来重复读取数据 while( (len = fis.read(buf)) > 0){ //将字节数组转换为字符串输出 System.out.print(new String(buf,0,len)); } //关闭文件输出流,放在finally块里更安全 fis.close();
}catch(IOException ex){
}

 

















以上是关于Java中的FileInputStream,FileOutputStram,BufferedWriter的主要内容,如果未能解决你的问题,请参考以下文章

Java中的FileInputStream,FileOutputStram,BufferedWriter

Java入门与基础(实例之文件)

JAVA中常用IO流类:FileInputStream和FileOutputStream

java io流 教程

java 关于FileReader和FileInputStream里的read()方法

使用Java MD5 为文件和字符串加密