《輸入輸出流File類(lèi)》PPT課件.ppt
《《輸入輸出流File類(lèi)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《輸入輸出流File類(lèi)》PPT課件.ppt(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第14章,輸入輸出檔案位串流字符串流,File類(lèi)別,不同的操作系統(tǒng)對(duì)于文件系統(tǒng)路徑的設(shè)定各有差別WindowsLinux,C:WorkspaceCH14,/home/justin/workspace/ch14,File類(lèi)別,File實(shí)例用作一個(gè)檔案或目錄的抽象表示,Filefile=newFile(args0);if(file.isFile()/是否為檔案System.out.println(args0+檔案);System.out.print(file.canRead()?可讀:不可讀);System.out.print(file.canWrite()?可寫(xiě):不可寫(xiě));System.out.println(file.length()+位組);,File類(lèi)別,else/列出所有的檔案及目錄Filefiles=file.listFiles();ArrayListfileList=newArrayList();for(inti=0;ifiles.length;i+)/先列出目錄if(filesi.isDirectory()/是否為目錄/取得路徑名System.out.println(+filesi.getPath()+);else/檔案先存入fileList,待會(huì)再列出fileList.add(filesi);,File類(lèi)別,/列出檔案for(Filef:fileList)System.out.println(f.toString();System.out.println();,RandomAccessFile類(lèi)別,Filefile=newFile(args0);/建立RandomAccessFile實(shí)例并以讀寫(xiě)模式開(kāi)啟檔案RandomAccessFilerandomAccessFile=newRandomAccessFile(file,rw);for(inti=0;istudents.length;i+)/使用對(duì)應(yīng)的write方法寫(xiě)入數(shù)據(jù)randomAccessFile.writeChars(studentsi.getName();randomAccessFile.writeInt(studentsi.getScore();,RandomAccessFile類(lèi)別,/使用seek()方法操作存取位置randomAccessFile.seek(num-1)*Student.size();Studentstudent=newStudent();/使用對(duì)應(yīng)的read方法讀出數(shù)據(jù)student.setName(readName(randomAccessFile);student.setScore(randomAccessFile.readInt();System.out.println(姓名:+student.getName();System.out.println(分?jǐn)?shù):+student.getScore();/設(shè)定關(guān)閉檔案randomAccessFile.close();,RandomAccessFile類(lèi)別,privatestaticStringreadName(RandomAccessFilerandomAccessfile)throwsIOExceptioncharname=newchar15;for(inti=0;iname.length;i+)namei=randomAccessfile.readChar();/將空字符取代為空格符并傳回returnnewString(name).replace(0,);,RandomAccessFile類(lèi)別,讀寫(xiě)檔案時(shí)幾個(gè)必要的流程開(kāi)啟檔案并指定讀寫(xiě)方式使用對(duì)應(yīng)的寫(xiě)入方法使用對(duì)應(yīng)的讀出方法關(guān)閉檔案,InputStream、OutputStream,數(shù)據(jù)流動(dòng)抽象化為一個(gè)串流(Stream),InputStream、OutputStream,InputStream是所有表示位輸入串流的類(lèi)別之父類(lèi)別System中的標(biāo)準(zhǔn)輸入串流in對(duì)象就是一個(gè)InputStream類(lèi)型的實(shí)例OutputStream是所有表示位輸出串流的類(lèi)別之父類(lèi)別System中的標(biāo)準(zhǔn)輸出串流對(duì)象out其類(lèi)型是java.io.PrintStream,OutputStream的子類(lèi)別,InputStream、OutputStream,很少直接操作InputStream或OutputStream上的方法,這些方法比較低階通常會(huì)操作它們的子類(lèi)別,trySystem.out.print(輸入字元:);System.out.println(輸入字符十進(jìn)制表示:+System.in.read();catch(IOExceptione)e.printStackTrace();,FileInputStream、FileOutputStream,建立FileInputStream或FileOutputStream的實(shí)例時(shí),必須指定檔案位置及文件名,實(shí)例被建立時(shí)檔案的串流就會(huì)開(kāi)啟不使用串流時(shí),您必須關(guān)閉檔案串流,以釋放與串流相依的系統(tǒng)資源,FileInputStreamfileInputStream=newFileInputStream(newFile(args0);FileOutputStreamfileOutputStream=newFileOutputStream(newFile(args1);fileInputStream.close();fileOutputStream.close();,FileInputStream、FileOutputStream,while(true)if(fileInputStream.available()1024)/剩余的資料比1024字節(jié)少/一位一位讀出再寫(xiě)入目標(biāo)文件intremain=-1;while(remain=fileInputStream.read()!=-1)fileOutputStream.write(remain);break;else/從來(lái)源檔案讀取數(shù)據(jù)至緩沖區(qū)fileInputStream.read(buffer);/將數(shù)組數(shù)據(jù)寫(xiě)入目標(biāo)文件fileOutputStream.write(buffer);,FileInputStream、FileOutputStream,以附加的模式來(lái)寫(xiě)入檔案,FileOutputStreamfileOutputStream=newFileOutputStream(args1,true);,BufferedInputStream、BufferedOutputStream,BufferedInputStream的資料成員buf是個(gè)位數(shù)組,默認(rèn)為2048字節(jié)BufferedOutputStream的資料成員buf是個(gè)位數(shù)組,默認(rèn)為512個(gè)字節(jié),BufferedInputStream、BufferedOutputStream,BufferedInputStreambufferedInputStream=newBufferedInputStream(newFileInputStream(srcFile);BufferedOutputStreambufferedOutputStream=newBufferedOutputStream(newFileOutputStream(desFile);System.out.println(復(fù)制檔案:+srcFile.length()+字節(jié));while(bufferedInputStream.read(data)!=-1)bufferedOutputStream.write(data);/將緩沖區(qū)中的數(shù)據(jù)全部寫(xiě)出bufferedOutputStream.flush();/關(guān)閉串流bufferedInputStream.close();bufferedOutputStream.close();,BufferedInputStream、BufferedOutputStream,BufferedInputStream、BufferedOutputStream并沒(méi)有改變InputStream或OutputStream的行為只是在操作對(duì)應(yīng)的方法之前,動(dòng)態(tài)的為它們加上一些是緩沖區(qū)功能,DataInputStream、DataOutputStream,DataOutputStreamdataOutputStream=newDataOutputStream(newFileOutputStream(args0);for(Membermember:members)/寫(xiě)入U(xiǎn)TF字符串dataOutputStream.writeUTF(member.getName();/寫(xiě)入int資料dataOutputStream.writeInt(member.getAge();/出清所有數(shù)據(jù)至目的地dataOutputStream.flush();/關(guān)閉串流dataOutputStream.close();,提供一些對(duì)Java基本數(shù)據(jù)型態(tài)寫(xiě)入的方法,DataInputStream、DataOutputStream,DataInputStreamdataInputStream=newDataInputStream(newFileInputStream(args0);/讀出數(shù)據(jù)并還原為對(duì)象for(inti=0;i0)list.add(User)objInputStream.readObject();objInputStream.close();,ObjectInputStream、ObjectOutputStream,/附加模式ObjectOutputStreamobjOutputStream=newObjectOutputStream(newFileOutputStream(file,true)/如果要附加對(duì)象至檔案后/必須重新定義這個(gè)方法protectedvoidwriteStreamHeader()throwsIOException;for(Objectobj:objs)/將對(duì)象寫(xiě)入檔案objOutputStream.writeObject(obj);objOutputStream.close();,SequenceInputStream,可以看作是數(shù)個(gè)InputStream對(duì)象的組合當(dāng)一個(gè)InputStream對(duì)象的內(nèi)容讀取完畢后,它就會(huì)取出下一個(gè)InputStream對(duì)象,直到所有的InputStream物件都讀取完畢,SequenceInputStream,/建立SequenceInputStream/并使用BufferedInputStreamBufferedInputStreambufInputStream=newBufferedInputStream(newSequenceInputStream(enumation),8192);BufferedOutputStreambufOutputStream=newBufferedOutputStream(newFileOutputStream(filename),8192);bytedata=newbyte1;/讀取所有檔案數(shù)據(jù)并寫(xiě)入目的地檔案while(bufInputStream.read(data)!=-1)bufOutputStream.write(data);bufInputStream.close();bufOutputStream.flush();bufOutputStream.close();,PrintStream,使用java.io.PrintStream可以自動(dòng)為您進(jìn)行字符轉(zhuǎn)換的動(dòng)作默認(rèn)會(huì)使用操作系統(tǒng)的編碼來(lái)處理對(duì)應(yīng)的字符轉(zhuǎn)換動(dòng)作,PrintStreamprintStream=newPrintStream(newFileOutputStream(newFile(test.txt);printStream.println(1);printStream.close();,ByteArrayInputStream、ByteArrayOutputStream,ByteArrayInputStream可以將一個(gè)數(shù)組當(dāng)作串流輸入的來(lái)源ByteArrayOutputStream則可以將一個(gè)位數(shù)組當(dāng)作串流輸出的目的地,PushbackInputStream,擁有一個(gè)PushBack緩沖區(qū)從PushbackInputStream讀出數(shù)據(jù)后,只要PushBack緩沖區(qū)沒(méi)有滿,就可以使用unread()將資料推回串流的前端,Reader、Writer,在處理串流數(shù)據(jù)時(shí),會(huì)根據(jù)系統(tǒng)默認(rèn)的字符編碼來(lái)進(jìn)行字符轉(zhuǎn)換Reader、Writer是抽象類(lèi),在進(jìn)行文本文件的字符讀寫(xiě)時(shí)真正會(huì)使用其子類(lèi)別可以直接在建構(gòu)Reader的實(shí)例時(shí),自行指定讀取時(shí)的編碼,InputStreamReaderreader=newInputStreamReader(byteArrayStream,Big5);,InputStreamReader、OutputStreamWriter,要對(duì)InputStream、OutputStream進(jìn)行字符處理,可以使用InputStreamReader、OutputStreamWriter為加上字符處理的功能,FileInputStreamfileInputStream=newFileInputStream(args0);/為FileInputStream加上字符處理功能InputStreamReaderinputStreamReader=newInputStreamReader(fileInputStream);FileOutputStreamfileOutputStream=newFileOutputStream(backup_+args0);/為FileOutputStream加上字符處理功能OutputStreamWriteroutputStreamWriter=newOutputStreamWriter(fileOutputStream);,InputStreamReader、OutputStreamWriter,intch=0;/以字符方式顯示檔案內(nèi)容while(ch=inputStreamReader.read()!=-1)System.out.print(char)ch);outputStreamWriter.write(ch);System.out.println();inputStreamReader.close();outputStreamWriter.close();,可以自行指定字符編碼,InputStreamReaderinputStreamReader=newInputStreamReader(fileInputStream,Big5);,FileReader、FileWriter,想要存取的是一個(gè)文本文件,可直接使用java.io.FileReader、java.io.FileWriter類(lèi)別,FileReaderfileReader=newFileReader(args0);FileWriterfileWriter=newFileWriter(args0+.txt);intin=0;charwlnChar=r,n;while(in=fileReader.read()!=-1)if(in=n)/寫(xiě)入rnfileWriter.write(wlnChar);elsefileWriter.write(in);fileReader.close();fileWriter.close();,BufferedReader、BufferedWriter,System.in是個(gè)位串流,為了轉(zhuǎn)換為字符串流,可使用InputStreamReader為其進(jìn)行字符轉(zhuǎn)換,然后再使用BufferedReader為其增加緩沖功能,BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in);,BufferedReader、BufferedWriter,/緩沖FileWriter字符輸出串流BufferedWriterbufWriter=newBufferedWriter(newFileWriter(args0);Stringinput=null;/每讀一行進(jìn)行一次寫(xiě)入動(dòng)作while(!(input=bufReader.readLine().equals(quit)bufWriter.write(keyin);/newLine()方法寫(xiě)入與操作系統(tǒng)相依的換行字符bufWriter.newLine();,PrintWriter,除了接受OutputStream實(shí)例作為自變量之外,PrintWriter還可以接受Writer對(duì)象作為輸出的對(duì)象,CharArrayReader、CharArrayWriter,可以將字符數(shù)組當(dāng)作字符數(shù)據(jù)輸出或輸入的來(lái)源,PushbackReader,擁有一個(gè)PushBack緩沖區(qū),只不過(guò)PushbackReader所處理的是字符只要PushBack緩沖區(qū)沒(méi)有滿,就可以使用unread()將資料回推回串流的前端,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 輸入輸出流File類(lèi) 輸入輸出 File PPT 課件
鏈接地址:http://www.szxfmmzy.com/p-11513066.html