java IO流之二 使用IO流讀取儲存檔案
阿新 • • 發佈:2019-02-18
http://blog.csdn.net/a107494639/article/details/7586440
一、使用字元流,讀取和儲存純文字檔案。
儲存檔案,也就是像一個檔案裡寫內容,既然是寫,那就需要使用輸出流。而且我們寫的是純文字檔案,所以這裡使用字元流來操作,java api提供給我們FileWriter這麼一個類,我們來試試:(讀取檔案同理使用FileReader類)
- package org.example.io;
- import java.io.File;
- import java.io.FileNotFoundException;
-
import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- publicclass TestFileWriter {
- publicstaticvoid main(String[] args) throws Exception {
- writeToFile();
- readFromFile();
- }
- /**
- * DOC 從檔案裡讀取資料.
- *
- * @throws FileNotFoundException
-
* @throws IOException
- */
- privatestaticvoid readFromFile() throws FileNotFoundException, IOException {
- File file = new File("E:\\helloworld.txt");// 指定要讀取的檔案
- FileReader reader = new FileReader(file);// 獲取該檔案的輸入流
- char[] bb = newchar[1024];// 用來儲存每次讀取到的字元
-
String str = "";// 用來將每次讀取到的字元拼接,當然使用StringBuffer類更好
- int n;// 每次讀取到的字元長度
- while ((n = reader.read(bb)) != -1) {
- str += new String(bb, 0, n);
- }
- reader.close();// 關閉輸入流,釋放連線
- System.out.println(str);
- }
- /**
- * DOC 往檔案裡寫入資料.
- *
- * @throws IOException
- */
- privatestaticvoid writeToFile() throws IOException {
- String writerContent = "hello world,你好世界";// 要寫入的文字
- File file = new File("E:\\helloworld.txt");// 要寫入的文字檔案
- if (!file.exists()) {// 如果檔案不存在,則建立該檔案
- file.createNewFile();
- }
- FileWriter writer = new FileWriter(file);// 獲取該檔案的輸出流
- writer.write(writerContent);// 寫內容
- writer.flush();// 清空緩衝區,立即將輸出流裡的內容寫到檔案裡
- writer.close();// 關閉輸出流,施放資源
- }
- }
測試結果:
hello world,你好世界
二、使用位元組流,讀取和儲存圖片
首先使用輸入流讀取圖片資訊,然後通過輸出流寫入圖片資訊:
- package org.example.io;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- publicclass TestIOStream {
- /**
- *
- * DOC 將F盤下的test.jpg檔案,讀取後,再存到E盤下面.
- *
- * @param args
- * @throws Exception
- */
- publicstaticvoid main(String[] args) throws Exception {
- FileInputStream in = new FileInputStream(new File("F:\\test.jpg"));// 指定要讀取的圖片
- File file = new File("E:\\test.jpg");
- if (!file.exists()) {// 如果檔案不存在,則建立該檔案
- file.createNewFile();
- }
- FileOutputStream out = new FileOutputStream(new File("E:\\test.jpg"));// 指定要寫入的圖片
- int n = 0;// 每次讀取的位元組長度
- byte[] bb = newbyte[1024];// 儲存每次讀取的內容
- while ((n = in.read(bb)) != -1) {
- out.write(bb, 0, n);// 將讀取的內容,寫入到輸出流當中
- }
- out.close();// 關閉輸入輸出流
- in.close();
- }
- }
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));這樣可以解決出現的中文亂碼