Java 檔案IO寫入讀取四種方法

來源:互聯網
上載者:User

標籤:粘貼   讀取檔案   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寫入讀取四種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.