NJUPT JAVA語言 流處理常式設計

來源:互聯網
上載者:User

標籤:njupt   java   io流   

一、 實驗目的和要求

實驗目的和要求:要求學生能在學習和理解課堂學習內容中JAVA流編程理論的基礎上,學習並逐步掌握JAVA流程式的編寫和調試,學習根據處理需求對不同流的正確選擇使用和組合使用方法。

實驗內容:設計和編寫一個程式從鍵盤讀入一行字串,將其寫入一個文字檔中,再編寫另一個程式從文字檔中讀入字串並在命令列視窗顯示出來。


二、實驗代碼

寫入檔案

package think;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream.GetField;public class java_exp_03iostream {public static void main(String[] args) {//字元緩衝流BufferedReader br = null;BufferedWriter bw = null;try {//br=newBufferedReader(newFileReader("d:\\buffered.txt"));//從鍵盤讀取位元組流 轉化成字元流 封裝成緩衝字元流br= new BufferedReader(new InputStreamReader(System.in));bw = new BufferedWriter(new FileWriter("d:\\buffered.txt"));for(String str; (str= br.readLine() )!= null ; ){        if(str.equalsIgnoreCase("e")||str.equalsIgnoreCase("exit")){System.out.println("退出");break;}else {bw.write(str);bw.newLine(); //行分隔字元}}} catch (IOException e) {e.printStackTrace();// TODO: handle exception}finally  //關閉兩個buffered對象{try {if(br != null)br.close();} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}try {if(bw != null)bw.close();} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}}}}<span style="font-weight: bold;"></span>

控制台輸入字串,輸入e退出,把字串寫入檔案。



第二個程式讀出檔案內容。

<span style="font-size:12px;"><strong>p</strong>ackage think;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class java_exp_03read {public static void main(String[] args) {BufferedReader br = null;try {br = new BufferedReader(new FileReader("d:buffered.txt"));for(String str; (str= br.readLine() )!= null ; ){ System.out.println(str);}} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}finally{try {if(br != null)br.close();} catch (IOException e) {// TODO: handle exceptione.printStackTrace();}}}}</span>





三、實驗總結

IO流學習小結:
 
*FileInputStream
 *FileOutputStream 位元組 檔案輸入輸出資料流
 *FileReader
 *FileReader 字元 檔案輸入輸出資料流
 *Buffered+* 緩衝流類 屬於過濾流  封裝 檔案流   常用
 *InputStreamReader 
 *OutputStreamReader 轉換流
 *DataInputStream 
 *DataOutputStream 資料流
 *PrintStream
 *PrintWriter 列印流
 *ObjectOutputStream
 *ObjectInputStream 物件流程


整體的思路:


 *檔案的輸入輸出有很多種方法可以實現,區別在於效率,字元的編碼不同,採用的方式可能也不同。


遇到的問題和解決的方法:


 *問題: 最先採用的方法是FileInputStream,FileOutputStream。如果寫入的是英文或者數字,沒問題。如果是中文,則從檔案輸入的時候,有問題。輸出到檔案沒問題。百度+思考了一會兒,結果如下:unicode編碼時,中文是兩個位元組編碼的。用位元組流的方式從檔案讀進來的時候,遇到中文的字元,把中文拆成兩個位元組讀取,所以會亂碼。而位元組流輸出到檔案的時候,會根據平台的預設編碼方式把中文字元轉換成了位元組數組,一個位元組一個位元組的輸出檔案,windows記事本可以自動認出中文字元。所以,常值內容需要讀取的時候,一般不用位元組流。


 * 最佳化:在用了字元流輸入輸出之後,又用了緩衝流,來提高效率。先把讀取或者寫入到檔案的內容,先儲存在緩衝數組裡,一次性寫入或者輸出,提高了效率。在我寫的程式可以很好的體現出來:比如,我在從console寫字元到檔案的時候,輸入 e  或者 exit結束,再沒有輸入e 和exit的時候,開啟buffered的時候,會發現是沒有內容的。結束之後,才顯示內容。


 * 心得:C,C++檔案的輸入輸出都學過,但是由於平時很少寫小軟體,所以沒用到這個。但是輸入輸出很重要。


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

NJUPT JAVA語言 流處理常式設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.