1.Byte Streams 按照字节读取
【1】所有继承自InputStream 和OutputStream都是字节读取的
【2】它的效率是比较低下的,它多用于读取二进制数据,如果是读取字符数据 可以使用下面的Character Streams
示例代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args)
throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream(
"xanadu.txt");
out = new FileOutputStream(
"outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
2.Character Streams 读取字符数据 自动处理字符集转换
【1】所有继承自Reader&Writer的都是按字符读取
【2】你可以使用InputStreamReader&OutputStreamWriter来实现按照字符读取字节流
【3】注意到,Character Stream与Byte Stream都是使用一个int值来存储获取到的数据,但是Character的数据存储在int值的低16为,Byte的数据存储在int值的低8位
【4】你可以使用BufferedReader&BufferedWriter来实现按照行读取和写入
使用PrintWriter来实现按照格式写入
FileReader fr=new FileReader("src/java/net/aviation/javaio/demo.txt");
//一个字符一个字符读取
// int ch=0;
// while((ch=fr.read())!=-1){
// System.out.print((char)ch);
// }
//按照行读取
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(new FileWriter("output1.txt"));
PrintWriter pw=new PrintWriter(new FileWriter("output2.txt"));
String x=null;
while((x=br.readLine())!=null){
System.out.println(x);
//BufferedWriter竟然没有writeLine方法
bw.write(x+"\n");
//PrintWriter可以按行写 也可以按格式写
pw.println(x);
}
br.close();
pw.close();
bw.close();
fr.close();
未完。。。