版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言程序設(shè)計(jì)第六章課后習(xí)題答案1.將本章例6-1至6-18中出現(xiàn)的文件的構(gòu)造方法均改為使用File類(lèi)對(duì)象作為參數(shù)實(shí)現(xiàn)。個(gè)人理解:File類(lèi)只能對(duì)整文件性質(zhì)進(jìn)行處理,而沒(méi)法通過(guò)自己直接使用file.Read()或者是file.write()類(lèi)似方法對(duì)文件內(nèi)容進(jìn)行寫(xiě)或者讀取。注意:是直接;下面只提供一個(gè)例2變化,其他的你自己做,10幾道啊,出這題的人真他媽有病。importjava.io.*;publicclasstest6_2{ publicstaticvoidmain(String[]args)throwsIOException{ StringfileName="D:\\Hello.txt"; Filewriter=newFile(fileName); writer.createNewFile(); BufferedWriterinput=newBufferedWriter(newFileWriter(writer)); input.write("Hello!\n"); input.write("thisismyfirsttextfile,\n"); input.write("你還好嗎?\n"); input.close(); }}運(yùn)行結(jié)果:(電腦系統(tǒng)問(wèn)題,沒(méi)法換行,所以一般使用BuffereWriter中newLine()實(shí)現(xiàn)換行)2.模仿文本文件復(fù)制的例題,編寫(xiě)對(duì)二進(jìn)制文件進(jìn)行復(fù)制的程序.//CopyMaker類(lèi)importjava.io.*;classCopyMaker{StringsourceName,destName;BufferedInputStreamsource; BufferedOutputStreamdest;intline;//打開(kāi)源文件和目標(biāo)文件,無(wú)異常返回trueprivatebooleanopenFiles(){ try{ source=newBufferedInputStream(newFileInputStream(sourceName)); } catch(IOExceptioniox){ System.out.println("Problemopening"+sourceName);returnfalse;}try{ dest=newBufferedOutputStream(newFileOutputStream(destName));}catch(IOExceptioniox){ System.out.println("Problemopening"+destName);returnfalse;}returntrue;}//復(fù)制文件privatebooleancopyFiles(){ try{ line=source.read(); while(line!=-1){ dest.write(line); line=source.read(); } } catch(IOExceptioniox){ System.out.println("Problemreadingorwriting"); returnfalse; } returntrue; }//關(guān)閉源文件和目標(biāo)文件privatebooleancloseFiles(){ booleanretVal=true; try{source.close();} catch(IOExceptioniox){ System.out.println("Problemclosing"+sourceName); retVal=false; } try{dest.close();} catch(IOExceptioniox){ System.out.println("Problemclosing"+destName); retVal=false; } returnretVal; }//執(zhí)行復(fù)制publicbooleancopy(Stringsrc,Stringdst){ sourceName=src;destName=dst;returnopenFiles()&©Files()&&closeFiles();}}//test6_2publicclasstest6_2{ publicstaticvoidmain(String[]args){ Strings1="lin.txt",s2="newlin.txt"; if(newCopyMaker().copy(s1,s2)) System.out.print("復(fù)制成功"); else System.out.print("復(fù)制失敗");}}運(yùn)行前的兩個(gè)文本:lin.txt和newlin.txt(為空)運(yùn)行后:3.創(chuàng)建一存儲(chǔ)若干隨機(jī)整數(shù)的文本文件,文件名、整數(shù)的個(gè)數(shù)及范圍均由鍵盤(pán)輸入。//memory存儲(chǔ)類(lèi)importjava.io.*;importjava.util.Random;publicclassmemory{ privateStringname; privateintcount; privateintMax; privateintMin; publicmemory(Stringn,intc,intmin,intmax){ =n; this.count=c; this.Min=min; this.Max=max; } publicvoidstartmemory(){ try{ FileWriterout=newFileWriter(name); intlimit=Max-Min; Randomrandom=newRandom(); for(inti=1;i<=count;i++){ intnumber=Min+random.nextInt(limit); System.out.print(number); System.out.print(""); out.write(number+""); } out.close(); }catch(IOExceptioniox){ System.out.println("方法startmemory()有問(wèn)題"); } }}//test6_3importjava.io.*;importjava.util.Scanner;publicclasstest6_3{ publicstaticvoidmain(String[]args)throwsIOException{ //BufferedReader StringfileName; intcount,min,max; Scannerin=newScanner(System.in); System.out.println("輸入要存儲(chǔ)的文件名"); fileName=in.next(); System.out.println("輸入隨機(jī)數(shù)個(gè)數(shù)"); count=in.nextInt(); System.out.println("輸入隨機(jī)數(shù)最小值"); min=in.nextInt(); System.out.println("輸入隨機(jī)數(shù)最大值"); max=in.nextInt(); memoryM=newmemory(fileName,count,min,max); M.startmemory(); }}}運(yùn)行結(jié)果:naruto文件存儲(chǔ)二進(jìn)制數(shù):4.分別使用FileWriter和BufferedWriter往文件中寫(xiě)入10萬(wàn)個(gè)隨機(jī)數(shù),比較用時(shí)的多少。//FileWriter方法importjava.io.*;publicclassfileWriter{ publicstaticvoidmain(String[]args)throwsIOException{ longtime=System.currentTimeMillis();//當(dāng)前時(shí)間 FileWriterfilewriter=newFileWriter("filewriter.txt"); intnumber; for(inti=1;i<=100000;i++){ number=(int)(Math.random()*10000); filewriter.write(number+""); } filewriter.close(); time=System.currentTimeMillis()-time;//時(shí)間差 System.out.println("用時(shí)為:"+time+"微秒."); } }運(yùn)行結(jié)果://BufferedWriter方法importjava.io.*;publicclassbufferedWriter{ publicstaticvoidmain(String[]args)throwsIOException{ longtime=System.currentTimeMillis();//當(dāng)前時(shí)間 BufferedWriterfilewriter=newBufferedWriter(newFileWriter("filewriter.txt")); intnumber; for(inti=1;i<=100000;i++){ number=(int)(Math.random()*10000); filewriter.write(number+""); } filewriter.close(); time=System.currentTimeMillis()-time;//時(shí)間差 System.out.println("用時(shí)為:"+time+"微秒."); } }運(yùn)行結(jié)果:有用時(shí)可知:BufferedWriter比FileWriter寫(xiě)入的速度快,當(dāng)需要寫(xiě)入大量?jī)?nèi)容,前者效率高。5.生成一html文件,使其能顯示2的冪次(0~9)的表格如下:Powerof2Value0112……//test6_5類(lèi)importjava.io.*;publicclasstest6_5{ publicstaticvoidmain(String[]args)throwsIOException{ BufferedWriterfuck=newBufferedWriter(newFileWriter("6_5.html")); fuck.write("<tableborder=1align=centerwidth=200height=250>"); fuck.newLine(); fuck.write("<tr><tdalign=center>Powerof2<tdalign=center>Value</tr>"); for(inti=0;i<=9;i++){ fuck.write("<tr><tdalign=center>"+i+"<tdalign=center>"+Math.pow(i,2)+"</tr>"); } fuck.write("</table>"); fuck.newLine(); fuck.close(); } }運(yùn)行結(jié)果:6.用記事本程序創(chuàng)建一篇包含幾十個(gè)英語(yǔ)單詞的小文章,要求從屏幕輸出每一個(gè)單詞。//test6_6importjava.io.*;publicclasstest6_6{ publicstaticvoidmain(String[]args)throwsIOException{ FileReaderfr=newFileReader("naruto.txt"); ints; while((s=fr.read())!=-1){ if(s>='a'&&s<='z'||s>='A'&&s<='Z') System.out.print((char)s); else System.out.print("\n"); } fr.close(); }}運(yùn)行結(jié)果:7.從鍵盤(pán)敲入一系列字母,將其存儲(chǔ)到文件中,對(duì)其進(jìn)行升序排序后,存儲(chǔ)到另一個(gè)文件,并顯示在屏幕上。//test6_7importjava.io.*;importjava.util.Scanner;publicclasstest6_7{//將字符串存入文件publicstaticvoidWriteToFile(Strings,StringfileName){ try{ FileWriterwriter=newFileWriter(fileName);writer.write(s);writer.close();}catch(IOExceptioniox){ System.out.println("寫(xiě)入字符串s到文件時(shí)出錯(cuò)!"); }}//將字符串從文件中讀取出來(lái)publicstaticStringReadFromFile(StringfileName){ Strings=newString(); try{ BufferedReaderin=newBufferedReader(newFileReader(fileName));s=in.readLine();}catch(IOExceptionio){ System.out.println("從文件中讀出字符串時(shí)出錯(cuò)!"); }returns;}//將字符串排序,然后返回字符串publicstaticStringsort(Strings){ char[]c=s.toCharArray();//將字符串轉(zhuǎn)換成字符數(shù)組chartemp;for(inti=0;i<c.length-1;i++)//這里運(yùn)用冒泡排序法for(intj=i+1;j<c.length;j++)if(c[i]>c[j]){temp=c[i];c[i]=c[j];c[j]=temp;}s=newString(c);//注意不能用c.toStringreturns;}publicstaticvoidmain(Stringargs[]){ Scannerin=newScanner(System.in); Strings=in.next();//從鍵盤(pán)輸入一組字符 WriteToFile(s,"D:\\naruto.txt");//將字符串保存到D:\naruto.txt s=null;//將s清空,下面好讀取,不然無(wú)法辨別s是讀取到數(shù)據(jù)還是原來(lái)的數(shù)據(jù)s=ReadFromFile("D:\\naruto.txt");//從文件D:\naruto.txt讀出字符串s=sort(s);//將s進(jìn)行排序WriteToFile(s,"D:\\newnaruto.txt");//將排序后的內(nèi)容保存到另一文件D:\newnaruto.txtSystem.out.println(s);}}運(yùn)行結(jié)果:文件D:\\naruto.txt和D:\\newnaruto.txt中內(nèi)容:8.創(chuàng)建一個(gè)學(xué)生類(lèi)(包括姓名、年齡、班級(jí)、密碼),創(chuàng)建若干該類(lèi)的對(duì)象并保存在文件中(密碼不保存),從文件讀取對(duì)象后顯示在屏幕上。//Student類(lèi)importjava.io.Serializable;classStudentimplementsSerializable{ Stringname; intage; intgrade; transientStringsecret; publicStudent(Stringname,intage,intgrade,Stringsecret){ =name; this.age=age; this.grade=grade; this.secret=secret; } }//test6_8importjava.io.*;publicclasstset6_8{ publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException{ Studentstudent[]={ newStudent("蒼井空",19,101,"changjingkong"), newStudent("吉沢明",19,103,"jizeming"), newStudent("武藤蘭",20,104,"wutenglan"), newStudent("我愛(ài)女優(yōu)",21,105,"woainvyou")}; //創(chuàng)建輸出 ObjectOutputStreamoos=newObjectOutputStream(newFileOutputStream("naruto.dat")); for(inti=0;i<student.length;i++) oos.writeObject(student[i]); oos.close(); //將對(duì)象數(shù)組student全部清空,后邊你會(huì)明白的。 for(inti=0;i<student.length;i++) student[i]=null; //創(chuàng)建輸入 ObjectInputStreamois=newObjectInputStream(newFileInputStream("naruto.dat")); for(inti=0;i<student.length;i++) student[i]=(Student)ois.readObject();//重新從文件中讀入,之前的清空就因?yàn)榇俗x入。注意,讀入要強(qiáng)制轉(zhuǎn)化為學(xué)生類(lèi) ois.close(); //顯示信息 for(inti=0;i<student.length;i++){ if(i==student.length-1){ System.out.println("我的名字:"+student[i].name); System.out.println("我的年齡:"+student[i].age); System.out.println("我的班級(jí):"+student[i].grade); System.out.println("我的密碼:"+student[i].secret); System.out.println(); } else{ System.out.println("第"+(i+1)+"個(gè)女學(xué)生名字:"+student[i].name); System.out.println("第"+(i+1)+"個(gè)女學(xué)生年齡:"+student[i].age); System.out.println("第"+(i+1)+"個(gè)女學(xué)生班級(jí):"+student[i].grade); System.out.println("第"+(i+1)+"個(gè)女學(xué)生密碼:"+student[i].secret); System.out.println(); } } }}9.對(duì)例6—14中的壓縮程序段進(jìn)行修改,是壓縮流經(jīng)過(guò)緩沖類(lèi)。比較兩種方法在對(duì)大的文件進(jìn)行壓縮時(shí)的效率。//沒(méi)經(jīng)過(guò)緩沖類(lèi),使用FileInputStream類(lèi)importjava.io.*;importjava.util.zip.*;publicclasstest6_9f{publicstaticvoidmain(String[]args)throwsIOException{ longtime=System.currentTimeMillis();FileInputStreamin=newFileInputStream("naruto.txt");GZIPOutputStreamout=newGZIPOutputStream(newFileOutputStream("test.gz"));System.out.println("Writingcompressingfilefromnaruto.txttotest.gz");intc;while((c=in.read())!=-1)out.write(c);//寫(xiě)壓縮文件in.close();out.close();System.out.println("Readingfileformtest.gztomonitor");BufferedReaderin2=newBufferedReader(newInputStreamReader(newGZIPInputStream(newFileInputStream("test.gz"))));Strings;while((s=in2.readLine())!=null)System.out.println(s);in2.close();System.out.println("Writingdecompressiontonewnaruto.txt");GZIPInputStreamin3=newGZIPInputStream(newFileInputStream("test.gz"));FileOutputStreamout2=newFileOutputStream("newnaruto.txt");while((c=in3.read())!=-1)out2.write(c);in3.close();out2.close(); time=System.currentTimeMillis()-time;//時(shí)間差System.out.println("用時(shí)為:"+time+"微秒.");}}運(yùn)行結(jié)果://壓縮流經(jīng)過(guò)緩沖類(lèi),使用BufferedInputStream類(lèi)importjava.io.*;importjava.util.zip.*;publicclasstest6_9b{publicstaticvoidmain(String[]args)throwsIOException{BufferedInputStreamin=newBufferedInputStream(newFileInputStream("naruto.txt"));GZIPOutputStreamout=newGZIPOutputStream(newBufferedOutputStream( newFileOutputStream("test.gz")));System.out.println("Writingcompressingfilefromnaruto.txttotest.gz");intc;longtime=System.currentTimeMillis();//寫(xiě)壓縮文件while((c=in.read())!=-1)out.write(c);in.close();out.close();//重新讀出來(lái)System.out.println("Readingfileformtest.gztomonitor");BufferedReaderin2=newBufferedReader(newInputStreamReader(newGZIPInputStream(newFileInputStream("test.gz"))));Strings;while((s=in2.readLine())!=null)System.out.println(s);in2.close();//將壓縮恢復(fù)System.out.println("Writingdecompressiontonewnaruto.txt");GZIPInputStreamin3=newGZIPInputStream(newFileInputStream("test.gz"));BufferedOutputStreamout2=newBufferedOutputStream( newFileOutputStream("newnaruto.txt"));while((c=in3.read())!=-1)out2.write(c);in3.close();out2.close(); time=System.currentTimeMillis()-time;//時(shí)間差System.out.println("用時(shí)為:"+time+"微秒.");}}運(yùn)行結(jié)果:以上2個(gè)類(lèi)的運(yùn)行用時(shí)比較,可見(jiàn)對(duì)大文件進(jìn)行壓縮,經(jīng)過(guò)緩沖流的效率要高得多。10.一家雜貨店的店主,需要查詢(xún)、輸入、修改任何一件商品的品名、價(jià)格、庫(kù)存量信息。請(qǐng)用隨機(jī)存取文件滿足其要求,可以更新、查詢(xún)信息。每件商品的標(biāo)志為其記錄號(hào)。//商品Thing類(lèi)publicclassThing{ charName[]=newchar[8];//16個(gè)字節(jié) intNumber; //4個(gè)字節(jié) doublePrice;//8個(gè)字節(jié) intCount;//4個(gè)字節(jié)所以保存一個(gè)商品要32個(gè)字節(jié) publicThing(Stringname,intnumber,doubleprice,intcount){ if(name.toCharArray().length>8) System.arraycopy(name.toCharArray(),0,this.Name,0,8);//如果字符長(zhǎng)度大于8,只取前8個(gè) else System.arraycopy(name.toCharArray(),0,this.Name,0,name.toCharArray().length);//如果字符長(zhǎng)度小于8,有幾個(gè)填幾個(gè) this.Number=number; this.Price=price; this.Count=count; } publicStringgetName(){ returnnewString(this.Name); } publicvoidsetName(Stringname){ if(name.toCharArray().length>8) System.arraycopy(name.toCharArray(),0,this.Name,0,8); else System.arraycopy(name.toCharArray(),0,this.Name,0,name.toCharArray().length); } publicdoublegetPrice(){ returnPrice; } publicvoidsetPrice(doubleprice){ this.Price=price; } publicintgetNumber(){ returnNumber; } publicvoidsetNumber(intnumber){ this.Number=number; } publicintgetCount(){ returnCount; } publicvoidsetCount(intcount){ this.Count=count; } }//操作Work類(lèi)(包含輸入、查詢(xún)、更改操作)importjava.io.*;publicclassWork{ StringFileName; publicWork(StringFileName){ this.FileName=FileName; } //寫(xiě)第n條商品記錄 publicvoidwriteThing(Thingth,intn)throwsException{ RandomAccessFilerafw=newRandomAccessFile(FileName,"rw"); rafw.seek(n*32);//將位置指示器移到指定位置上,每個(gè)商品占32個(gè)字節(jié) for(inti=0;i<8;i++) rafw.writeChar(th.Name[i]);//寫(xiě)入商品名 rafw.writeInt(th.Number);//寫(xiě)入商品號(hào)碼 rafw.writeDouble(th.Price);//寫(xiě)入價(jià)格 rafw.writeInt(th.Count);//寫(xiě)入商品庫(kù)存量 rafw.close(); } //輸入商品信息 publicvoidreadThing(intn)throwsException{ charthingname[]=newchar[8]; RandomAccessFilerafr=newRandomAccessFile(FileName,"r"); rafr.seek(n*32);//將位置指示器移到指定位置上,每個(gè)商品占32個(gè)字節(jié) for(inti=0;i<8;i++) thingname[i]=rafr.readChar();//讀到char商品名 System.out.print("商品名:"); System.out.println(thingname); System.out.println("編號(hào):"+rafr.readInt()); System.out.println("價(jià)格:"+rafr.readDouble()); System.out.println("商品庫(kù)存量:"+rafr.readInt()); rafr.close(); System.out.println(); } //修改存入n號(hào)商品名字 publicvoidsetThi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語(yǔ)文第2單元孟子蚜1王好戰(zhàn)請(qǐng)以戰(zhàn)喻課件新人教版選修先秦諸子蚜
- 2024年吉林省長(zhǎng)春市中考英語(yǔ)試題含解析
- 七年級(jí)下心理健康教育教案
- 2024年河北省高考生物試卷真題(含答案解析)
- 2024至2030年中國(guó)攻瑰茄行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024至2030年中國(guó)手持式多波長(zhǎng)穩(wěn)定光源行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024至2030年中國(guó)印花T/C純棉休閑襯衫行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024年山東省東營(yíng)市中考語(yǔ)文試題含解析
- 2024年黑龍江省齊齊哈爾市中考語(yǔ)文試題含解析
- 2024年中國(guó)鋼絲跑道軸承市場(chǎng)調(diào)查研究報(bào)告
- 燃?xì)夤艿?流量-流速-口徑計(jì)算公式
- 華電架空輸電線路大作業(yè)
- 暗挖工程冬季施工措施
- 往生薦亡功德文疏
- 2021年春新教科版四年級(jí)下冊(cè)科學(xué) 2.3《簡(jiǎn)易電路》教案含教學(xué)反思
- 相干反斯托克斯拉曼光譜cars-姚波善
- GB∕T 13331-2014 土方機(jī)械 液壓挖掘機(jī) 起重量
- (畢業(yè)論文)烷基化裝置危險(xiǎn)性分析
- 赫爾曼的敘事學(xué)理論
- 醫(yī)學(xué)德語(yǔ)詞匯大全
- 化學(xué)品安全標(biāo)簽編寫(xiě)規(guī)定_GB15258-2009
評(píng)論
0/150
提交評(píng)論