Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件10文件_第1頁(yè)
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件10文件_第2頁(yè)
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件10文件_第3頁(yè)
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件10文件_第4頁(yè)
Java程序設(shè)計(jì)實(shí)訓(xùn)教程課件10文件_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本章內(nèi)容

輸入輸出流字符輸入輸出文件管理

字節(jié)輸入流

InputStreamPushbackInputStreamByteArrayInputStreamStringBufferInputStreamFileInputStreamPipedInputStreamSequenceInputStreamFilterStreamDataInputStreamBufferedInputStreamLineNumberInputStream類描述ByteArrayInputStream以內(nèi)存的一個(gè)緩沖區(qū)當(dāng)作InputStream使用StringBufferInputStream將String轉(zhuǎn)化為InputStreamFileInputStream讀取文件中的信息PipedInputStream常用作多線程環(huán)境中的數(shù)據(jù)源SequenceInpuStream將兩個(gè)或多個(gè)InputStream轉(zhuǎn)為單一的InputStreamFilterInputStream是抽象類,作為其他裝飾類的接口。DataInputStream和DataOutputStream協(xié)同應(yīng)用,可從stream讀入基本類型BufferedInputStream緩沖讀,減少讀次數(shù)LineNumberInputStream它會(huì)記錄stream內(nèi)的行數(shù)。PushbackInputStream它會(huì)送最后一個(gè)字節(jié),一般用于編譯器。importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassReadFileextendsFrameimplementsActionListener{

FileDialogm_fd;TextFieldm_txtFilename=newTextField(10);Labelm_lblChoosefile=newLabel("選擇文件:");Buttonm_btnChoose=newButton("瀏覽");TextAream_txtareaFilecontent=newTextArea(10,20);Stringm_sTemp;

StringBufferm_buf=newStringBuffer();ReadFile(){this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});this.setLayout(newFlowLayout());add(m_lblChoosefile);add(m_txtFilename);add(m_btnChoose);add(m_txtareaFilecontent);

m_btnChoose.addActionListener(this);setSize(500,250);setVisible(true);}publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="瀏覽"){

m_txtareaFilecontent.setText(null); m_buf.delete(0,m_buf.length());

m_fd=newFileDialog(this,"打開(kāi)文件",FileDialog.LOAD);

m_fd.setDirectory("c:\\");m_fd.setVisible(true);

m_sTemp=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(m_sTemp);try{

BufferedInputStreambi=newBufferedInputStream(newFileInputStream(m_sTemp));

while(bi.available()!=0){chara=(char)bi.read();m_buf.append(a);}

bi.close();m_txtareaFilecontent.setText(m_buf.toString());}catch(Exceptionee){}}//if}//actionPerformed()publicstaticvoidmain(String[]args){newReadFile();}}字節(jié)輸出流OutputStreamByteArrayOutputStreamFileOutputStreamPipedOutputStreamFilterStreamDataOutputStreamBufferedOutputStreamPrintStream類描述ByteArrayOutputStream建立一塊內(nèi)存緩沖區(qū),所有送至此Stream的數(shù)據(jù)都會(huì)被置于該緩沖區(qū)內(nèi)FileOutputStream將信息寫入文件PipedOutputStream常用作多線程環(huán)境中的數(shù)據(jù)源FilterOutputStream是抽象類,作為其他裝飾類的接口。DataOutputStream和DataInputStream協(xié)同應(yīng)用,可將各種基本類型數(shù)據(jù)寫至streamBufferedOutputStream緩沖寫,減少寫次數(shù),可以調(diào)用flush函數(shù)清除緩沖區(qū)內(nèi)容PrintStream產(chǎn)生格式化輸出結(jié)果。publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="瀏覽"){ m_fd=newFileDialog(this,"打開(kāi)文件",FileDialog.LOAD);m_fd.setDirectory("c:\\");m_fd.setVisible(true);

inFilename=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(inFilename);try{BufferedInputStreambi=newBufferedInputStream(newFileInputStream(inFilename));

outFilename=m_fd.getDirectory()+"b.txt";

BufferedOutputStreambo=newBufferedOutputStream(newFileOutputStream(outFilename));while(bi.available()!=0){chara=(char)bi.read();m_buf.append(a);

bo.write(a);}m_txtareaFilecontent.setText(m_buf.toString());bi.close();bo.close();}catch(Exceptionee){}}}字符輸入輸出Reader和Writer提供了基于字符的IO(character-based)?;谧止?jié)的流無(wú)法正確處理基于16位的unicode字符,經(jīng)常出現(xiàn)亂碼,Reader和Writer在所有IO操作上提供對(duì)unicode的支持。publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="瀏覽"){ m_fd=newFileDialog(this,"打開(kāi)文件",FileDialog.LOAD);m_fd.setDirectory("c:\\");m_fd.setVisible(true);inFilename=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(inFilename);try{

BufferedReaderbr=newBufferedReader(newFileReader(inFilename));

outFilename=m_fd.getDirectory()+"b.txt";

BufferedWriterbw=newBufferedWriter(newFileWriter(outFilename));Strings;

while((s=br.readLine())!=null){m_buf.append(s);}

bw.write(m_buf.toString());br.close();bw.close();m_txtareaFilecontent.setText(m_buf.toString());}catch(Exceptionee){}}}文件管理調(diào)用File類方法可完成對(duì)文件或目錄的常用操作,如創(chuàng)建、刪除和重命名等,不涉及文件的讀寫操作創(chuàng)建File類對(duì)象

File(Stringfilename);

filename指File對(duì)象對(duì)應(yīng)的文件或目錄名及其路徑,路徑可以是相對(duì)路徑,相對(duì)路徑認(rèn)為與當(dāng)前應(yīng)用程序在同一目錄下絕對(duì)路徑如:E:\\test\\a.txtFile(Stringdirectorypath,Stringfilename);

filename是文件名字File(Filef,Stringfilename);

f是一個(gè)指定成目錄的文件

獲取文件或目錄屬性判斷文件或目錄是否存在

publicbooleanexists();判斷是文件還是目錄

publicbooleanisFile();

publicbooleanisDirectory();獲取文件或目錄名稱和路徑

publicStringgetName();

publicStringgetPath();獲取文件長(zhǎng)度

publiclonglength();獲取文件讀寫屬性

publicbooleancanRead();

publicbooleancanWrite();列出目錄中的文件

publicString[]list();比較兩個(gè)文件或目錄

publicbooleanequals(Filef);文件或目錄操作重命名文件

publicbooleanrenameTo(Filenewfile);刪除文件

publicvoiddelete();創(chuàng)建目錄

publicbooleanmkdir();importjava.io.*;importjava.util.*;publicclassfile{publicstaticvoidmain(String[]args){Stringm_sFilename;try{

BufferedReaderbin=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("請(qǐng)輸入文件或目錄名稱(QUIT退出):");m_sFilename=bin.readLine();

if(m_sFilename.equalsIgnoreCase("quit")){bin.close();break;}

Filef=newFile(m_sFilename);

if(f.isFile()){

BufferedReaderfin=newBufferedReader(newFileReader(f));Strings;

System.out.println("文件名稱:"+f.getName());System.out.println("文件日期:"

+new

Date(f.lastModified()).toString());System.out.println("文件大小:"+f.length());System.out.println("文件內(nèi)容如下:");System.out.println("-----------------------------------");

while((s=fin.readLine())!=null)System.out.println(s);System.out.println("-----------------------------------");

fin.close();}

elseif(f.isDirectory()){String[]files=f.list();System.out.println("目錄文件列表:");System.out.println("-----------------------------------");

for(inti=0;i<files.length;i++)System.out.println(files[i]);System.out.println("-----------------------------------");}}}catch(Exceptione){}System.out.println("再見(jiàn)!");}}文件隨機(jī)訪問(wèn)FileInputStream和FileOutputStream實(shí)現(xiàn)了對(duì)磁盤文件的順序讀寫,JAVA同時(shí)提供了對(duì)文件的隨機(jī)訪問(wèn)RandomAccessFile。創(chuàng)建RandomAccessFile類的對(duì)象RandomAccessFile(Stringname,Stringmode);

name指明創(chuàng)建的RandomAccessFile對(duì)象對(duì)應(yīng)的文件及其路徑,路徑可以是相對(duì)

mode指明打開(kāi)文件方式,“r”,“rw”

RandomAccessFile(Filedir,Stringmode);

dir表示所對(duì)應(yīng)文件的File對(duì)象

mode指明打開(kāi)文件方式,“r”,“rw”

對(duì)文件位置指針的操作

新建對(duì)象,文件指針在文件開(kāi)頭處;

隨著讀寫操作,文件位置指針都相應(yīng)后移讀寫的字節(jié)數(shù)。獲取指針位置

publiclonggetPointer();//返回當(dāng)前位置相對(duì)文件頭算起的絕對(duì)位置移動(dòng)指針

publicvoidseek(longpos);//將指針移動(dòng)到相對(duì)文件頭的pos值指定位置獲取文件大小

publiclonglength();//返回文件長(zhǎng)度(字節(jié)數(shù))讀文件實(shí)現(xiàn)了DataInput接口,多種方法讀取不同類型的數(shù)據(jù):readBoolean();readChar();readInt();readByte();readLine();……寫文件實(shí)現(xiàn)了DataOutput接口,針對(duì)不同類型數(shù)據(jù)提供多種輸出方法:

writeBoolean();writeChar();writeInt();writeByte();

importjava.io.*;importjava.util.*;publicclassFile2{publicstaticvoidmain(String[]args){Stringm_sFilename;try{

BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("請(qǐng)輸入文件名稱(QUIT退出):");

m_sFilename=in.readLine();if(m_sFilename.equalsIgnoreCase("quit")){in.close();break;}RandomAccessFileraf=newRandomAccessFile(m_sFilename,"rw");System.out.println("文件內(nèi)容如下:");System.out.println("-----------------------------------");

while(raf.getFilePointer()<raf.length())System.out.println(raf.readLine());System.out.println("-----------------------------------");raf.close();}}catch(Exceptione){

System.out.println(e.getMessage());}System.out.println("再見(jiàn)!");}}聲明窗口類ReadFile,在窗口中輸入用戶名和密碼,并將用戶名和密碼保存到文件Secret.txt中。思考題importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassReadFileextendsFrameimplementsActionListener{Labelm_id=newLabel("用戶名:");Labelm_key=newLabel("密碼:");Buttonm_input=newButton("存入");TextFieldId=newTextField(10);TextFieldKeyid=newTextField(10);StringoutFilename;StringBufferm_buf=newStringBuffer();ReadFile(){th

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論