標籤:粘貼 讀取檔案 dwr bytes str 迴圈讀取 gb2312 關係 col
第一種:位元組流 FileInputStream FileOutputStream
1.1 讀取操作
//先建立一個和硬碟串連的流(打通硬碟和記憶體的通道)
FileInputStream fis = new FileInputStream("D:\\Demo.txt");
//建立緩衝區大小是1k
byte[] bytes = new byte[1024];
int data = 0; //儲存有效位元組數
StringBuffer sb = new StringBuffer();
//由於檔案大小通常遠遠大於緩衝區大小,所以要迴圈讀取
while((data = fis.read(bytes)) != -1){//返回-1則檔案讀取完畢,停止迴圈讀取
String temp=new String(bytes,0,data);//讀取緩衝區的位元組數,轉換成字串
sb.append(temp);
System.out.printlb("====有效位元組數===="+data);
}
System.out.printlb(sb.toString());
//關閉流
fis.close();
1.2 寫入操作
//建立一個讀取檔案的流
FileOutputStream fos = new FileOutputStream("E:\\Demo.txt");
String temp = "海記憶體知己,天涯若比鄰。";
//把字串分解成位元組,填到位元組數組中
byte[] bytes = temp.getBytes();
//寫入到指定路徑,沒有則建立檔案
fos.write(bytes);
//關閉流
fos.close();
System.out.println("寫入成功!");
第二種:字元流 char FileReader FileWriter
tips:在不同作業系統和編碼方式下,char和byte之間的關係不是固定的
一般認為:gbk/gb2312 2個byte
utf-8 3個byte
2.1 讀取操作
Reader fr = new FileReader("E:\\Demo.txt");char ch[] = new char[1024];StringBuffer sbf = new StringBuffer();int length = fr.read(ch);while (length != -1) { sbf.append(ch); length = fr.read();}System.out.println(sbf.toString());fr.close();
2.2 寫入操作
Writer fr = new FileWriter("D:\\Demo.txt");
fr.write("有朋自遠方來,不亦樂乎");
fr.close();
第三種:帶緩衝區的字元讀取和寫入方案
BufferedReader
BufferedWriter 緩衝區 儲存的資料量預設是1024byte
3.1 讀取操作
Reader fr = new FileReader("D:\\Demo.txt");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
fw.close();
3.2 寫入操作
Writer fw = new FileWriter("D:\\Demo.txt",true);//true 為連續追加
BufferedWriter bw = new BufferedWriter(fw);
bw.write("學而時習之,不亦説乎");
bw.close();
fw.close();
第四種:二進位方式的讀取和寫入方案
DataInputStream
DataOutputStream
讀寫操作:複製粘貼
InputStream is = new FileInputStream("E:\\春暖花開.jpg");
DataInputStream dis = new DataInputStream(is);
OutputStream ops = new FileOutputStream("D:\\春暖花開.jpg");
DataOutputStream dos = new DataOutputStream(ops);
byte[] bytes = new byte[1024];
int date = 0;
while ((date = dis.read(bytes)) != -1) {
dos.write(bytes,0,date);
}
dos.close();
ops.close();
dis.close();
is.close();
System.out.println("複製成功");
Java 檔案IO寫入讀取四種方法