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中常用IO流类:FileInputStream和FileOutputStream