Java 文件IO寫入讀取四種方法

第一種:字節流 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之間的關係不是固定的app

       通常認爲:gbk/gb2312     2個byte編碼

       utf-8                3個bytespa

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  寫入操做code

Writer fr = new FileWriter("D:\\Demo.txt");
fr.write("有朋自遠方來,不亦樂乎");
fr.close();

 

第三種:帶緩衝區的字符讀取和寫入方案  

                      BufferedReaderblog

      BufferedWriter  緩衝區  存儲的數據量默認是1024byteip

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("複製成功");

相關文章
相關標籤/搜索