第11單元Java輸入與輸出(實(shí)驗(yàn)1)Java文本IO應(yīng)用_第1頁
第11單元Java輸入與輸出(實(shí)驗(yàn)1)Java文本IO應(yīng)用_第2頁
第11單元Java輸入與輸出(實(shí)驗(yàn)1)Java文本IO應(yīng)用_第3頁
第11單元Java輸入與輸出(實(shí)驗(yàn)1)Java文本IO應(yīng)用_第4頁
第11單元Java輸入與輸出(實(shí)驗(yàn)1)Java文本IO應(yīng)用_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第11單元Java輸入與輸出主講人:龔迅煒Java程序設(shè)計(jì)實(shí)踐教程實(shí)驗(yàn)1Java文本I/O應(yīng)用目錄2實(shí)驗(yàn)?zāi)繕?biāo)4拓展訓(xùn)練3實(shí)驗(yàn)內(nèi)容1

知識要點(diǎn)Java文本I/O應(yīng)用Reader是一個抽象類,在實(shí)施具體的文本讀的過程中,需要根據(jù)流的具體形式使用子類實(shí)現(xiàn)。JDK提供了實(shí)現(xiàn)緩沖功能的BufferReader,實(shí)現(xiàn)過濾功能的FilterReader,針對字節(jié)數(shù)組的流CharArrayReader,針對管道的PipedReader,針對字符串的StringReader;另外還有一種針對二進(jìn)制流的轉(zhuǎn)換流InputStreamReader,它的作用是將原來按照二進(jìn)制方式解析的流變成用字符編碼方式解析的文本流。類似的,Writer也是一個抽象類,在實(shí)施具體的文本寫操作中,也需要根據(jù)要輸出的具體流選擇合適的子類實(shí)現(xiàn)。JDK提供了BufferedWriter、FilterWriter,CharArrayWriter、PipedWriter、PrinterWriter和StringWriter,另外OutputStreamWriter也是一種轉(zhuǎn)換流,實(shí)現(xiàn)二進(jìn)制流轉(zhuǎn)換為文本流。無論是哪種文本流,它們都有相同的父類Reader或Writer,所以各子類之間可以很方便的進(jìn)行轉(zhuǎn)換。知識目標(biāo):理解文本的概念,掌握字符串編碼;理解輸入輸出設(shè)備和存儲設(shè)備,掌握標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和文件系統(tǒng);理解流的概念,掌握字符流的基本讀寫操作,各類流之間的相互轉(zhuǎn)換;理解文件、文件系統(tǒng),掌握文件的讀寫操作。能力目標(biāo):能夠運(yùn)用字符流對文件進(jìn)行讀寫操作,能夠使用文件系統(tǒng),能夠靈活使用恰當(dāng)?shù)牧鬟M(jìn)行字符文件的處理。素質(zhì)目標(biāo):培養(yǎng)學(xué)生自主、開放的學(xué)習(xí)能力,能夠查閱文獻(xiàn),閱讀代碼,整合修改提升業(yè)務(wù)水平。123驗(yàn)證性實(shí)驗(yàn)--詩歌的行文轉(zhuǎn)換讀取文件poem.txt,按下面所述進(jìn)行修改后保存到poem文件中。文件中的詩的行文是從右向左的古代模式,現(xiàn)在需要程序處理后符合現(xiàn)代的行文規(guī)范從左向右排列。如圖所示,左邊為古代行文模式,右邊為現(xiàn)代行文模式。publicclassStyleConvertor{ privatefinalFilefile; publicStyleConvertor(Filefile)throwsFileNotFoundException{ if(file.exists()&&file.isFile()) this.file=file; else thrownewFileNotFoundException("文件"+file+"無法找到或者是一個目錄。"); } /** *將從右向左的行文轉(zhuǎn)換為從左向右的行文 *1.首先讀取源文檔的行列數(shù) *2.建立相應(yīng)的行緩沖字符串?dāng)?shù)組 *3.逐行讀取,并將相應(yīng)的字符存儲到行緩沖數(shù)組的對應(yīng)位置 *4.最后將調(diào)整好的行緩沖字符串?dāng)?shù)組寫入到指定文件中 */ publicvoidrightLeftConvertToLeftRight(){ //在此處添加代碼 } /** *將從左向右的行文轉(zhuǎn)換為從右向左的行文 *根據(jù)上面方法的經(jīng)驗(yàn),完成本方法的實(shí)現(xiàn)

*/ publicvoidleftRightConvertToRightLeft(){ //在此處添加代碼 } /** *轉(zhuǎn)換后的輸出文件的文件名生成器 *@apiNote文件名生成過程中需要考慮文件的分隔符,文件名是否有后綴名的問題 *@paramflag如果flag為true,則文件內(nèi)容按照從右向左的行文規(guī)范,文件名加_r后綴;否則文件內(nèi)容按照從左向右的行文規(guī)范,文件名加_l后綴 *@returnrtnFileName作為生成的新文件的文件名 */ privateStringgetConvertFileName(booleanflag){ StringrtnFileName=null; //在此處添加代碼 returnrtnFileName; }}publicclassStyleConvertorTest{ publicstaticvoidmain(String[]args){ if(testFileNotFound()==true){ System.out.println("無效文件路徑測試通過!"); }else{ System.out.println("錯誤:無效文件路徑測試沒有通過!"); } //在此處添加代碼,完成下面測試代碼調(diào)用 } publicstaticbooleantestFileNotFound(){ booleanbRtn=false; //在此處添加代碼 returnbRtn; } publicstaticbooleantestLeftRightConvertToRightLeft(){ booleanbRtn=false; //在此處添加代碼 returnbRtn; } publicstaticbooleantestRrightLeftConvertToLeftRight(){ booleanbRtn=false; //在此處添加代碼 returnbRtn; } //比較兩個文件的內(nèi)容是否一致,如果一致返回true,否則false privatestaticbooleancompareFile(Filesource,Filetarget){ booleanbRtn=false; //在此處添加代碼 returnbRtn; }}驗(yàn)證性實(shí)驗(yàn)--上三角矩陣篩查讀取文件matrix.txt,檢測該文件中符合上三角矩陣的數(shù)量和矩陣寫入到matrix_answer.txt文件中。標(biāo)準(zhǔn)結(jié)果存放在matrix_result.txt文件中。(1)完成相關(guān)類的設(shè)計(jì),并完成測試。(2)matrix.txt文件的首行為矩陣的數(shù)量,每個矩陣之間用“%--”進(jìn)行分割,如下所示。4%--1230155198%--1635691710192004781000251%--123480034569002351000610000021000008%--1598matrix文件的內(nèi)容123480034569002351000610000021000008希望得到的文件內(nèi)容publicclassMatrix{ privateint[][]elements; privateintrow; privateintcol; //可根據(jù)需要自行添加必要的private成員變量和成員方法

/** *構(gòu)造方法 *根據(jù)參數(shù)elems初始化成員elements,如果參數(shù)不能構(gòu)成矩陣則拋出異常;初始化后elements的值改變不能影響參數(shù)elems。 *@exception當(dāng)參數(shù)elems不是一個矩陣時,拋出異常"錯誤:無法構(gòu)造Matrix對象,參數(shù)數(shù)組不是一個矩陣。" *@paramelems */ publicMatrix(int[][]elems)throwsArithmeticException{

} /** *判斷矩陣是否是上三角矩陣 *@return如果是上三角矩陣返回true;否則返回false */ publicbooleanisUpperTriangleMatrix(){

//在此處添加代碼 returntrue; } /** *判斷矩陣是否是方陣 *@return如果是方陣返回true;否則返回false */ publicbooleanisSquareMatrix(){ //在此處添加代碼,實(shí)現(xiàn)矩陣是否是方陣 returnfalse; } /** *將矩陣轉(zhuǎn)換為字符串 *例如矩陣是 123 轉(zhuǎn)換為字符串 "123\n456\n789\n" * 456 * 789 */ publicStringtoString(){ StringsRtn=null; //在此處添加代碼,實(shí)現(xiàn)矩陣的字符串輸出 returnsRtn; }}publicclassMatrixFromFile{ privateFilefile; privateintnumOfMatrix; publicMatrixFromFile(Stringfilepath)throwsFileNotFoundException{ //在此處添加代碼,實(shí)現(xiàn)文件初始化等 }

publicMatrix[]read(){ //在此處添加代碼,實(shí)現(xiàn)矩陣文件讀取 returnrtnMatrix; }}publicclassMatrixDemo{ publicstaticvoidmain(String[]args){ if(testReadFile()){ System.out.println("矩陣文件讀取正確。"); }else{ System.out.println("錯誤:矩陣文件讀取有問題。"); } if(testUpperTriangleMatrix()){ System.out.println("上三角矩陣判斷正確。"); }else{ System.out.println("錯誤:上三角矩陣判斷有問題。"); } }

publicstaticbooleantestReadFile(){ //在此處添加代碼,實(shí)現(xiàn)矩陣文件讀取測試 }

publicstaticbooleantestUpperTriangleMatrix(){ //在此處添加代碼,實(shí)現(xiàn)上三角矩陣測試 }}驗(yàn)證性實(shí)驗(yàn)--字符串類型統(tǒng)計(jì)將input.txt作為標(biāo)準(zhǔn)輸入,讀取文件中的字符串;對讀取的字符進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)其數(shù)字字符串和英文字符串的個數(shù),將統(tǒng)計(jì)結(jié)果在控制臺輸入;如果讀取的字符非數(shù)字、中文、英文的字符串則將其寫入到系統(tǒng)默認(rèn)的err流中后,程序繼續(xù)執(zhí)行;文件中的字符串以空格或回車進(jìn)行分割。publicclassFileCharStatic{ privateFilefile; privateintenglishWordCount; privateintnumCount; privateintchineseCount; privateintotherCount;

//省略部分get方法 /** *構(gòu)造方法,檢查文件是否存在,如果存在則進(jìn)行統(tǒng)計(jì)工作。 *@parampath傳入的文件路徑 *@throwsFileNotFoundException如果文件不存在則拋出異常,并提示"文件不存在,請檢查。" */ publicFileCharStatic(Stringpath)throwsFileNotFoundException{ //根據(jù)提示補(bǔ)全代碼 } /** *統(tǒng)計(jì)指定文件中的不同類型字符的數(shù)量 *@paramf */ privatevoiddoWordStaticFromFile(Filef){ try(//在此處添加代碼){ Stringline; while((line=br.readLine())!=null){ String[]words=line.split(""); for(Stringword:words){ switch(check(word)){ case//在此處添加代碼: chineseCount++; break; case//在此處添加代碼: englishWordCount++; break; case//在此處添加代碼: numCount++; break; default: otherCount++; //在此處添加代碼 } } } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }

} /** *遍歷要統(tǒng)計(jì)文件或文件夾,如果file是文件夾則僅統(tǒng)計(jì)該文件夾下的所有文件,不在遍歷下層文件夾。 */ privatevoiddoWordStatic(){ if(file.isFile()) doWordStaticFromFile(file); else{ //在此處添加代碼,遍歷文件夾,并進(jìn)行統(tǒng)計(jì) } } /** *檢測字符串是否符合相應(yīng)要求 *@paramword待檢測的字符串 *@return字符的類型 */ publicstaticWordTypecheck(Stringword){ WordTypewtRtn=WordType.OTHER; //在此處添加代碼,使用String的matches方法進(jìn)行word類型檢查 returnwtRtn; }}設(shè)計(jì)性實(shí)驗(yàn)--獲取WEB頁面中圖片標(biāo)簽的src屬性值控制臺輸入WEB頁面的URL,將主頁上出現(xiàn)的img標(biāo)簽中src屬性值保存到web_img_src.txt中,每個src值單獨(dú)一行。使用java.util.Scanner類實(shí)現(xiàn)網(wǎng)頁訪問;頁面訪問后得到是一個html文檔流,找到流中“<img”的位置,然后再找到該標(biāo)簽的src屬性,并記錄下其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論