一、 Java
把這些不同來源和目标的資料都統一抽象為資料流。
Java語言的輸入輸出功能是十分強大而靈活的。
在Java類庫中,IO部分的内容是很龐大的,因為它涉及的領域很廣泛:
标準輸入輸出,檔案的操作,網絡上的資料流,字元串流,對象流,zip檔案流。
這裡介紹幾種讀寫檔案的方式
二、InputStream、OutputStream(位元組流)
//讀取檔案(位元組流)
InputStream in = new FileInputStream("d:\\1.txt");
//寫入相應的檔案
OutputStream out = new FileOutputStream("d:\\2.txt");
//讀取資料
//一次性取多少位元組
byte[] bytes = new byte[2048];
//接受讀取的内容(n就代表的相關資料,隻不過是數字的形式)
int n = -1;
//循環取出資料
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字元串
String str = new String(bytes,0,n,"GBK"); #這裡可以實作位元組到字元串的轉換,比較實用
System.out.println(str);
//寫入相關檔案
out.write(bytes, 0, n);
}
//關閉流
in.close();
out.close();
三、BufferedInputStream、BufferedOutputStream(緩存位元組流)使用方式和位元組流差不多,但是效率更高(推薦使用)
//讀取檔案(緩存位元組流)
BufferedInputStream in = new BufferedInputStream(new FileInputStream("d:\\1.txt"));
//寫入相應的檔案
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
//讀取資料
//一次性取多少位元組
byte[] bytes = new byte[2048];
//接受讀取的内容(n就代表的相關資料,隻不過是數字的形式)
int n = -1;
//循環取出資料
while ((n = in.read(bytes,0,bytes.length)) != -1) {
//轉換成字元串
String str = new String(bytes,0,n,"GBK");
System.out.println(str);
//寫入相關檔案
out.write(bytes, 0, n);
}
//清楚緩存
out.flush();
//關閉流
in.close();
out.close();
四、InputStreamReader、OutputStreamWriter(位元組流,這種方式不建議使用,不能直接位元組長度讀寫)。使用範圍用做字元轉換
//讀取檔案(位元組流)
InputStreamReader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
//寫入相應的檔案
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("d:\\2.txt"));
//讀取資料
//循環取出資料
byte[] bytes = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
System.out.println(len);
//寫入相關檔案
out.write(len);
}
//清楚緩存
out.flush();
//關閉流
in.close();
out.close();
五、BufferedReader、BufferedWriter(緩存流,提供readLine方法讀取一行文本)
//讀取檔案(字元流)
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK"));#這裡主要是涉及中文
//BufferedReader in = new BufferedReader(new FileReader("d:\\1.txt")));
//寫入相應的檔案
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:\\2.txt"),"GBK"));
//BufferedWriter out = new BufferedWriter(new FileWriter("d:\\2.txt"));
//讀取資料
//循環取出資料
String str = null;
while ((str = in.readLine()) != null) {
System.out.println(str);
//寫入相關檔案
out.write(str);
out.newLine();
}
//清楚緩存
out.flush();
//關閉流
in.close();
out.close();
六、Reader、PrintWriter(PrintWriter這個很好用,在寫資料的同僚可以格式化)
//讀取檔案(位元組流)
Reader in = new InputStreamReader(new FileInputStream("d:\\1.txt"),"GBK");
//寫入相應的檔案
PrintWriter out = new PrintWriter(new FileWriter("d:\\2.txt"));
//讀取資料
//循環取出資料
byte[] bytes = new byte[1024];
int len = -1;
while ((len = in.read()) != -1) {
System.out.println(len);
//寫入相關檔案
out.write(len);
}
//清楚緩存
out.flush();
//關閉流
in.close();
out.close();
七、基本的幾種用法就這麼多,當然每一個讀寫的使用都是可以分開的。為了更好的來使用io。流裡面的讀寫,建議使用BufferedInputStream、BufferedOutputStream