![文檔項(xiàng)目十五_第1頁(yè)](http://file4.renrendoc.com/view/bc492b5880d36df44bb51c34f92ecb60/bc492b5880d36df44bb51c34f92ecb601.gif)
![文檔項(xiàng)目十五_第2頁(yè)](http://file4.renrendoc.com/view/bc492b5880d36df44bb51c34f92ecb60/bc492b5880d36df44bb51c34f92ecb602.gif)
![文檔項(xiàng)目十五_第3頁(yè)](http://file4.renrendoc.com/view/bc492b5880d36df44bb51c34f92ecb60/bc492b5880d36df44bb51c34f92ecb603.gif)
![文檔項(xiàng)目十五_第4頁(yè)](http://file4.renrendoc.com/view/bc492b5880d36df44bb51c34f92ecb60/bc492b5880d36df44bb51c34f92ecb604.gif)
![文檔項(xiàng)目十五_第5頁(yè)](http://file4.renrendoc.com/view/bc492b5880d36df44bb51c34f92ecb60/bc492b5880d36df44bb51c34f92ecb605.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目十五:文件屬性的訪(fǎng)問(wèn)、文本文件的讀寫(xiě)、隨機(jī)文件的讀寫(xiě)(一)文件屬性的訪(fǎng)問(wèn)、文本文件的讀寫(xiě)、隨機(jī)文件的讀寫(xiě)(1)一、實(shí)訓(xùn)目的:1、掌握File類(lèi)的構(gòu)造方法。2、掌握File類(lèi)的常用方法,并能夠靈活地運(yùn)用它來(lái)獲取文件的相關(guān)屬性。二、實(shí)訓(xùn)內(nèi)容:編寫(xiě)一個(gè)程序,使它能夠?qū)崿F(xiàn)像DOS操作系統(tǒng)命令Dir的功能,列出指定目錄內(nèi)所有文件和目錄的相關(guān)信息。程序運(yùn)行結(jié)果如下圖所示:D:\javapj\myinput>javaJdird:\javapjD:\javapj\myinput>javaJdird:\javapj2005-3-169:31:02461ex.class2005-3-2120:58:0027myproject.jcu2005-3-2120:58:00172myproject.jcw2005-3-2120:58:002myproject.jcd2005-3-169:31:00183ex.java2005-3-219:57:5089mysys.java2005-4-1623:18:44554myjava.jcu2005-4-1623:18:44262myjava.jcw2005-3-2121:12:06<DIR>myinput2005-4-1623:18:444175myjava.jcd9個(gè)文件5925字節(jié)1個(gè)目錄三、簡(jiǎn)要提示:1、運(yùn)行該程序,如果沒(méi)有給定參數(shù),就顯示當(dāng)前目錄下的文件與子目錄的相關(guān)信息。程序也可以從main(Stringargs[])方法中接收一個(gè)參數(shù),作為要顯示的目錄和文件名稱(chēng)。2、引用字符串參數(shù)args[0]時(shí),要考慮到?jīng)]有參數(shù)輸入時(shí)可能出現(xiàn)的異常??捎靡韵麓a來(lái)完成參數(shù)的讀取。try{dir=args[0];//dir是已定義的String對(duì)象}catch(ArrayIndexOutOfBoundsExceptione){dir=”./”;//考慮沒(méi)有參數(shù)傳入時(shí),dir的值是當(dāng)前目錄}3、根據(jù)傳入的參數(shù)創(chuàng)建File類(lèi)的實(shí)例,并判斷該文件或目錄是否存在。Filef=newFile(dir);if(!f.exists()){System.out.println(“文件或目錄不存在!”);System.exit(0);}4、在傳入?yún)?shù)相連的文件或目錄存在的情況下,判斷是否是目錄,如果是目錄則顯示該目錄中文件和相關(guān)子目錄的情況;如果是文件,則顯示該文件的相關(guān)信息(用相關(guān)變量記錄文件數(shù)、目錄數(shù)、字節(jié)數(shù)、字節(jié)總數(shù))。5、目錄的處理比較復(fù)雜,要獲取該目錄下的文件或子目錄信息,可以使用listFiles()方法來(lái)返回該目錄下的所有文件對(duì)象。如:Filels[]=f.listFile();然后分別對(duì)返回的每個(gè)元素,判斷是目錄或文件,若是文件還要輸出字節(jié)數(shù)。使用循環(huán)for(inti=0;i<ls.length;i++){…}完成信息輸出。6、由于File類(lèi)的lastModified()方法返回的時(shí)間是長(zhǎng)整型,要輸出日期和時(shí)間,可以使用Date類(lèi)對(duì)象的方法實(shí)現(xiàn)。四、程序參考:1、importjava.io.*;importjava.util.Date;publicclassExample27_1{publicstaticvoidmain(Stringargs[]){Stringdir;intx=0,y=0;longsum=0;try{dir=args[0];}catch(ArrayIndexOutOfBoundsExceptione){dir=”./”;}Filef=newFile(dir);if(!f.exists()){System.out.println("文件或目錄不存在!");System.exit(0);}elseif(f.isDirectory()){Filels[]=f.listFiles();Datefd;for(inti=0;i<ls.length;i++){fd=newDate(ls[i].lastModified());System.out.print(fd.toLocaleString()+”\t”);if(ls[i].isDirectory()){System.out.print(“<DIR>\t\t”);x++;}else{y++;sum+=ls[i].length();System.out.print(“\t”+ls[i].length()+”\t”);}(二)文件屬性的訪(fǎng)問(wèn)、文本文件的讀寫(xiě)、隨機(jī)文件的讀寫(xiě)(2)一、實(shí)訓(xùn)目的:1、掌握FileInputStream類(lèi)和FileOutputStream類(lèi)的構(gòu)造方法。2、掌握FileInputStream類(lèi)和FileOutputStream類(lèi)的常用方法。3、能夠利用FileInputStream和FileOutputStream對(duì)象完成對(duì)文件的讀寫(xiě)。二、實(shí)訓(xùn)內(nèi)容:編寫(xiě)一個(gè)程序,能夠完成對(duì)一個(gè)文本文件的復(fù)制功能。源文件名和目標(biāo)文件名都在命令行中指定,同時(shí)在屏幕上輸出該文件的內(nèi)容,程序運(yùn)行結(jié)果如下圖所示。D:\javapj\myinput>javaCopyFileaa.txtbb.txtD:\javapj\myinput>javaCopyFileaa.txtbb.txtJava語(yǔ)言是一種公司追求軟件系統(tǒng)運(yùn)行環(huán)境無(wú)關(guān)性的跨平臺(tái)語(yǔ)言,為此Java平臺(tái)將應(yīng)用程序間、應(yīng)用程序與磁盤(pán)文件之間的數(shù)據(jù)抽象為各種類(lèi)型的流(Stream)對(duì)象,將文件系統(tǒng)中的文件抽象為File對(duì)象。(1)什么叫流?流式輸入輸出有什么特點(diǎn)?(2)Java流被分為字節(jié)流、字符流兩大流類(lèi),兩者有什么區(qū)別?復(fù)制文件完成,共284個(gè)字節(jié)!三、簡(jiǎn)要提示:1、由于源文件名和目標(biāo)文件名在命令行中指定,所以必須要求有源文件名和目標(biāo)文件名,且兩者不能相同。2、為源文件創(chuàng)建輸入流對(duì)象,為目標(biāo)文件創(chuàng)建輸出流對(duì)象,對(duì)于文本文件內(nèi)容的讀寫(xiě)采采用循環(huán)結(jié)構(gòu)中輸入流的read()河輸出流的write()方法實(shí)現(xiàn)。3、讀寫(xiě)結(jié)束,關(guān)閉輸入輸出流。四、程序參考:1、importjava.io.*
;classExample28_1{publicstaticvoidmain(String[]args){Stringfile1=””,file2=””;intch;longcnt=0;if(args.length==2){if(args[0].equals(args[1])){System.out.println("源文件名和目標(biāo)文件名不能相同!");System.exit(0);}else{file1=args[0];file2=args[1];}}else{System.out.println("請(qǐng)指定源文件名和目標(biāo)文件名!");System.exit(0);}try{FileInputStreamfis=newFileInputStream(file1);FileOutputStreamfos=newFileOutputStream(file2);cnt=fis.available();while((ch=fis.read()!=-1)){System.out.write(ch);Fos.write(ch);}fis.close();fos.close();}catch(FileNotFoundExceptione){System.out.println("源文件:未找到!");System.exit(-1);}catch(IOExceptione){Ssytem.out.pritnln(e.toString());}System.out.println("\n復(fù)制文件完成,共"+cnt+"個(gè)字節(jié)!");}}
(三)文件屬性的訪(fǎng)問(wèn)、文本文件的讀寫(xiě)、隨機(jī)文件的讀寫(xiě)(3)一、實(shí)訓(xùn)目的:1、進(jìn)一步掌握利用FileInputStream和FileOutputStream對(duì)象完成對(duì)文件的讀寫(xiě)。2、掌握使用DataInputStream類(lèi)和DataOutputStream類(lèi)讀寫(xiě)格式文件。3、掌握把用戶(hù)輸入的數(shù)據(jù)保存到文檔中。二、實(shí)訓(xùn)內(nèi)容:編寫(xiě)一個(gè)程序,創(chuàng)建student.dat文件,初始化學(xué)生記錄并保存到student.dat文件中。三、簡(jiǎn)要提示:1、為源文件創(chuàng)建輸入流對(duì)象,為目標(biāo)文件創(chuàng)建輸出流對(duì)象,對(duì)于文本文件內(nèi)容的讀寫(xiě)采采用循環(huán)結(jié)構(gòu)中輸入流的read()河輸出流的write()方法實(shí)現(xiàn)。2、要將輸入的字符轉(zhuǎn)換成數(shù)值類(lèi)型,參閱標(biāo)準(zhǔn)輸入輸出的數(shù)據(jù)類(lèi)型轉(zhuǎn)換。四、程序參考:1、importjava.io.*;publicclassExample29_1{publicstaticvoidmain(String[]args){ Stringfile="student.dat"; Students1=newStudent(); Students2=newStudent(10,"張飛",16,'A',true); try{ FileOutputStreamfo=newFileOutputStream(file); //創(chuàng)建文件輸出流對(duì)象 DataOutputStreamout=newDataOutputStream(fo);//創(chuàng)建數(shù)據(jù)輸出流對(duì)象 out.writeInt(s1.sno); //寫(xiě)文件 out.writeUTF(); out.writeInt(s1.age); out.writeChar(s1.grade); out.writeBoolean(s1.sex); out.writeInt(s2.sno); out.writeUTF(); out.writeInt(s2.age); out.writeChar(s2.grade); out.writeBoolean(s2.sex); out.close(); //關(guān)閉數(shù)據(jù)輸出流 fo.close(); //關(guān)閉文件輸出流 System.out.println("文件:"+file+"創(chuàng)建完畢!"); System.out.println("開(kāi)始讀取文件內(nèi)容:"); FileInputStreamfi=newFileInputStream(file); //創(chuàng)建文件輸入流對(duì)象 DataInputStreamin=newDataInputStream(fi); //創(chuàng)建數(shù)據(jù)輸入流對(duì)象 for(inti=1;i<=2;i++){//讀取文件內(nèi)容 intsno=in.readInt(); Stringsname=in.readUTF(); intage=in.readInt(); chargrade=in.readChar(); booleansex=in.readBoolean(); System.out.println(sno+"\t"+sname+"\t"+age+"\t"+grade+"\t"+sex); } in.close(); fi.close(); }catch(IOExceptione){ System.out.println(e.toString()); }}}classStudent{ intsno; Stringname; intage; chargrade; booleansex; publicStudent(){ this.sno=0; ="未知"; this.age=0; this.grade='C'; this.sex=true; } publicStudent(intsno,Stringname,intage,chargrade,booleansex){ if(sno>0)this.sno=sno; =name; this.age=age; this.grade=grade; this.sex=sex; }}
(四)文件屬性的訪(fǎng)問(wèn)、文本文件的讀寫(xiě)、隨機(jī)文件的讀寫(xiě)(4)一、實(shí)訓(xùn)目的:1、掌握RandomAccessFile類(lèi)的構(gòu)造方法。2、掌握RandomAccessFile類(lèi)的常用方法,特別對(duì)于指針的控制。3、能夠利用RandomAccessFile對(duì)象完成對(duì)隨機(jī)文件的讀寫(xiě)。二、實(shí)訓(xùn)內(nèi)容:編寫(xiě)一個(gè)程序,結(jié)合所給出的生成student.dat文件代碼,能夠?qū)崿F(xiàn)對(duì)學(xué)生記錄的隨機(jī)訪(fǎng)問(wèn),要求輸入記錄號(hào),讀出該記錄對(duì)應(yīng)的學(xué)生信息。三、簡(jiǎn)要提示:1、要將輸入的字符轉(zhuǎn)換成數(shù)值類(lèi)型,參閱標(biāo)準(zhǔn)輸入輸出的數(shù)據(jù)類(lèi)型轉(zhuǎn)換。2、要為student.dat文件創(chuàng)建一個(gè)與之連接的RandomAccessFile類(lèi)的對(duì)象。3、根據(jù)輸入的記錄判斷是否超出文件的范圍(n指記錄號(hào)的整型值,13是每條記錄的寬度)。if(n*13>=ra.length()){System.out.println(“記錄號(hào)超出范圍!”);}4、對(duì)于正常范圍內(nèi)的記錄號(hào),通過(guò)RandomAccessFile類(lèi)的seek(n*13)來(lái)找出相應(yīng)的記錄,并用對(duì)應(yīng)的方法去讀取它。ra.seek(n*13);b=newbyte[8];ra.read(b);intage=ra.readInt();booleansex=ra.readBoolean();System.out.println(newString(b)+”\t”+age+”\t”+sex);5、要考慮程序中可能出現(xiàn)的異常及其處理。四、程序參考:生成Student.dat文件的代碼如下:importjava.io.*;publicclassCreateStudent{ publicstaticvoidmain(String[]args) { Students[]=newStudent[4]; s[0]=newStudent("zhangsan",17,false); s[1]=newStudent("lisi",18,true); s[2]=newStudent("wangwu",20,true); s[3]=newStudent("zhaoliu",19,false); try{ RandomAccessFilera=newRandomAccessFile("student.dat","rw");for(inti=0;i<4;i++)//將4個(gè)學(xué)生信息寫(xiě)入文件 { ra.writeBytes(s[i].name);//將字符串按字節(jié)寫(xiě)入 ra.writeInt(s[i].age); ra.writeBoolean(s[i].sex); } System.out.println("隨機(jī)文件字節(jié)數(shù):"+ra.length()); ra.seek(0); //文件指針指向開(kāi)始位置 System.out.println("第一條學(xué)生記錄:"); byteb[]=newbyte[8]; ra.read(b); intage=ra.readInt(); booleansex=ra.readBoolean(); System.out.println(newString(b)+"\t"+age+'\t'+sex); ra.skipBytes(26); //訪(fǎng)問(wèn)第四個(gè)記錄System.out.println("移動(dòng)后指針位置:"+ra.getFilePointer()); ra.read(b); age=ra.readInt(); sex=ra.readBoolean(); System.out.println(newString(b)+"\t"+age+'\t'+sex); ra.close(); } catch(IOExceptione){ System.out.println(e.toString());}}}classStudent{ //學(xué)生類(lèi)的定義 Stringname; intage; booleansex; finalstaticintLEN=8; Student(Stringname,intage,booleansex){ if(name.length()>LEN){ name=name.substring(0,8); /
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)生組團(tuán)旅游創(chuàng)業(yè)項(xiàng)目
- 大學(xué)生校園項(xiàng)目創(chuàng)業(yè)計(jì)劃書(shū)范文
- 2024-2025人教版初中七下數(shù)學(xué)湖北專(zhuān)版10.2.2第2課時(shí) 用加減法解較復(fù)雜的二元一次方程組【課件】
- 2024-2025人教版初中七下數(shù)學(xué)湖北專(zhuān)版8.3第1課時(shí)-實(shí)數(shù)的概念及分類(lèi)【課件】
- 大學(xué)生創(chuàng)業(yè)做什么項(xiàng)目好呢
- 安全員C證考試知識(shí)競(jìng)賽監(jiān)控試題大全附答案
- 二次供水冬季施工方案
- 學(xué)習(xí)方式革新
- 安徽省合肥市新站區(qū)2024-2025學(xué)年八年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 租店鋪申請(qǐng)書(shū)
- 《公司法完整版》課件2024
- 江蘇省南京市聯(lián)合體2024-2025學(xué)年八年級(jí)上學(xué)期物理期末練習(xí)卷(含答案)
- 2024年下半年信息系統(tǒng)項(xiàng)目管理師真題及答案
- 2024-2030年中國(guó)互感器行業(yè)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- ??低曤娏π袠I(yè)系統(tǒng)解決方案
- 《軌道交通工程盾構(gòu)施工技術(shù)》 課件 項(xiàng)目4 盾構(gòu)施工
- 礦井車(chē)輛安全培訓(xùn)課件
- 期末練習(xí)卷(模擬試題)-2024-2025學(xué)年 一年級(jí)上冊(cè)數(shù)學(xué)人教版
- 股權(quán)轉(zhuǎn)讓與入股合作協(xié)議
- 人工挖孔樁作業(yè)指導(dǎo)書(shū)
- GB/T 18601-2024天然花崗石建筑板材
評(píng)論
0/150
提交評(píng)論