文件读写操作
来源:互联网 发布:qq三国张飞和关羽js 编辑:程序博客网 时间:2024/06/06 00:39
涉及到读写文件,我脑中常常会浮现出很多io操作类,但是一直搞不清楚他们之间的关系,以及什么情况下该用哪种。这次我花了两三天的功夫,终于把他们理了一遍。
从源头说起,Reader/Writer是所有字符流的根,InputStream/outputStream是所有字节流的根。
public abstract class Reader
extends Object
implements Readable, Closeable
Reader是个抽象类,直接继承它,我们常用的是读文件类BufferedReader,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
public class BufferedReader
extends Reader
BufferedReader(Reader in)
BufferedReader br = new BufferedReader(new FileReader(sourFile));
或者
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//键盘输入System.in,输入的是字节流
public class InputStreamReader
extends Reader
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符
public class FileReader
extends InputStreamReader
FileReader是用来读取字符文件的便捷类。
FileReader
用于读取字符流。要读取原始字节流,请考虑使用FileInputStream
。BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sourFile)));//文件输入
public class FileInputStream
extends InputStream
FileInputStream
用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用FileReader。
public abstract class Writer
extends Object
implements Appendable, Closeable, Flushable
Writer是个抽象类,直接继承它,我们常用的写文件类是BufferedWriter,将文本写入字符输出流,缓冲各个字符,从而提供字符、数组和字符串的高效写入。
public class BufferedWriter
extends Writer
常用构造方法:
BufferedWriter(Writer out)
通常 Writer 将其输出立即发送到基础字符或字节流,建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,
BufferedWriter bw = new BufferedWriter(new FileWriter(desFile));//文件输出
或者
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//写的内容输出到控制台
public class OutputStreamWriter
extends Writer
OutputStreamWriter 是字符流通向字节流的桥梁:使用指定的 charset 将要向其写入的字符编码为字节。
public class FileWriter
extends OutputStreamWriter
FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(desFile)));//原始字节流写到文件
public class FileOutputStream
extends OutputStream
FileOutputStream
用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用FileWriter
。
示例
public static void main(String agrs[]) throws IOException{
System.out.println("===================键盘输入,控制台输出========================");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//键盘输入
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//控制台输出
String line = null;
while(null!=(line=br.readLine())){
if("over".equals(line))
break;
bw.write(line);
bw.newLine();//如果没有这一行,控制台显示不会换行
bw.flush();//如果不刷新,会一直在缓冲池中,等输入结束显示
}
br.close();
bw.close();
}
public static void main(String agrs[]) throws IOException{
File desFile = new File("C:\\Users\\lenovo\\Desktop\\temp\\info.txt");
File sourFile = new File("C:\\Users\\lenovo\\Desktop\\temp\\YYPT\\Z71450700GRGMT0722");
System.out.println("===================文件输入,输出到文件========================");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sourFile)));//文件输入:InputStreamReader 是字节流通向字符流的桥梁
// BufferedReader br = new BufferedReader(new FileReader(sourFile));//文件输入
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(desFile)));//输出到文件:OutputStreamWriter 是字符流通向字节流的桥梁
// BufferedWriter bw = new BufferedWriter(new FileWriter(desFile));//输出到文件:字符流
String line = null;
while(null!=(line=br.readLine())){
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
- 文件读写操作
- 另一个文件读写操作
- [C++]文件读写操作
- 读写文件操作
- xml文件操作( 读写)
- 文件的读写操作
- 文件的读写操作
- 文件读写常用操作
- 文件的读写操作
- 文件读写操作
- 文件读写常用操作
- java 读写文件操作
- PHP 文件读写操作
- C#文件读写操作
- 文件读写操作总结
- 文件读写操作总结
- 文件读写操作总结
- 文件读写操作
- 67.FMDB代码示例
- Android创建桌面快捷方式
- 关于Java.Lang.Spring.split()
- hdoj Reverse Number 1266 (字符串)水
- coreApp="true";android:sharedUserId="android.uid.system";android:process="system"
- 文件读写操作
- Canvas与Paint的初级使用
- Json串的单引号和双引号问题
- [Err] 1062 - Duplicate entry '111' for key 'PRIMARY'
- LeetCode 082 Remove Duplicates from Sorted List II
- 多态性不适合继承链中的实例变量
- 基础
- Java final以及static用法简单demo
- android-Saving Data