Java IO学习
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();
未完。。。