歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

程序設(shè)計(jì)第15章輸入輸出流和文件操作ppt課件

  • 資源ID:1263380       資源大?。?span id="geawz0u" class="font-tahoma">1.61MB        全文頁(yè)數(shù):43頁(yè)
  • 資源格式: PPT        下載積分:200積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要200積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說(shuō)明有答案則都視為沒有答案,請(qǐng)知曉。

程序設(shè)計(jì)第15章輸入輸出流和文件操作ppt課件

第十五章 輸入輸出流與文件操作,目 錄,重點(diǎn)與難點(diǎn)點(diǎn)撥,輸入輸出流的分類,目錄和文件管理,文件和隨機(jī)訪問,其他常用的流,綜合案例,字符流,字節(jié)流,經(jīng)典練習(xí)題,本章知識(shí)重點(diǎn),輸入輸出流的分類,java.io包中流的體系結(jié)構(gòu),目錄和文件管理涉及到的類,輸入輸出流的概念,本章知識(shí)難點(diǎn),目錄和文件管理涉及到的類,流輸入及輸出的一般過(guò)程,輸入輸出流的分類,Java 流的概念 Java使用流(stream)來(lái)執(zhí)行輸入輸出(I/O)的功能,流是一 種數(shù)據(jù)的源頭和目的之間的通信途徑 標(biāo)準(zhǔn)輸入輸出 Java系統(tǒng)事先定義好兩個(gè)流對(duì)象,分別與系統(tǒng)的標(biāo)準(zhǔn)輸入 和標(biāo)準(zhǔn)輸出相聯(lián)系,它們是System. in和System.out System是Java中一個(gè)功能很強(qiáng)大的類,利用它可以獲得很 多Java運(yùn)行時(shí)的系統(tǒng)信息。,【例15.1】,輸出流(程序?qū)懗鰯?shù)據(jù)),輸入流(程序讀入數(shù)據(jù)),Java流類體系結(jié)構(gòu)1,Java流類體系結(jié)構(gòu)2,Java流類體系結(jié)構(gòu)3,Java流類體系結(jié)構(gòu)4,Java流的概念,輸入輸出流的分類,目錄和文件管理,文件名的處理,File類,文件或目錄的生成,文件屬性測(cè)試,普通文件信息和工具,目錄操作,public File(String path):如果path是實(shí)際存在的路徑,則該File對(duì)象表示的是目錄;如果path是文件名,則該File對(duì)象表示的是文件。 public File(String path,String name):path是路徑名,name是文件名(不可為空)。 public File(File dir,String name):dir是路徑名,name是文件名。,String getName( ):得到一個(gè)文件的名稱(不包括路徑)。 String getPath( ):得到一個(gè)文件的路徑名。 String getAbsolutePath( ):得到一個(gè)文件的絕對(duì)路徑名。 String getParent( ):得到一個(gè)文件的上一級(jí)目錄名。 String renameTo(File newName):將當(dāng)前文件名更名為給定文件的完整路徑。,【例15.2】,boolean exists( ):測(cè)試當(dāng)前File對(duì)象所指示的文件或目錄是否存在,若存在,返回True。 boolean createNewFile():創(chuàng)建當(dāng)前文件。 boolean canWrite( ):測(cè)試當(dāng)前文件是否可寫。 boolean canRead( ):測(cè)試當(dāng)前文件是否可讀。 boolean isFile( ):測(cè)試當(dāng)前文件是否是文件(不是目錄)。 boolean isDirectory( ):測(cè)試當(dāng)前文件是否是目錄,若為目錄則返回True。,【例15.3】,long lastModified( ):得到文件最近一次修改的時(shí)間。 long length( ):得到文件的長(zhǎng)度,以字節(jié)為單位,若不存在,返回0。 boolean delete( ):刪除File對(duì)象代表的文件或目錄,目錄需為空。刪除成功,返回True。,boolean mkdir():生成一個(gè)由該對(duì)象指定的路徑(新目錄),若成功,返回True。 boolean mkdirs():生成一個(gè)新的目錄,包含子目錄。若成功,返回true。 boolean renameTo(File newName):將當(dāng)前File對(duì)象所代表的路徑名改為newName所代表的路徑名。若成功,返回true。 String list():列出當(dāng)前目錄下的文件。 File listFiles():得到該對(duì)象所代表的目錄下的File對(duì)象數(shù)組。 String toString():得到抽象路徑表示法。,【例15.4】,File類的應(yīng)用,【例15.5】,【例15.6】,字節(jié)流,順序讀/寫文件(FileInputStream與FileOutputStream),FileInputStream類從磁盤文件讀取數(shù)據(jù)。常用的構(gòu)造方法有: FileInputStream(String name):打開文件name用來(lái)讀取數(shù)據(jù)。 如:FileInputStream f =new FileInputStream(“c:/test.txt“); FileInputStream(File file):打開文件file用來(lái)讀取數(shù)據(jù)。 如:File f=new File(“c:/test.txt“); FileInputStream f1=new FileinputStream(f); 將FileDescriptor對(duì)象作為其參數(shù)。 如:FileDescriptor() fd=new FileDescriptor(); FileinputStream f2=new FileInputstream(fd);,FileOutputStream類創(chuàng)建文件(如果文件不存在),并將數(shù)據(jù)寫入文件。FileOutputStream類常用的構(gòu)造方法有: FileOutputStream(String name):打開文件name用來(lái)寫入數(shù)據(jù)。 如:FileOutputStream f=new FileOutputStream (“c:/test.txt“); FileOutputStream(File file):打開文件file用來(lái)寫入數(shù)據(jù)。 如:File f =new File(“c:/test.txt“); FileOutputStream f1=new FileOutputStream (f); FileOutputStream(String name,Boolean append):打開文件name用來(lái)寫入數(shù)據(jù),若append為true,則寫入的數(shù)據(jù)會(huì)加到原有文件后面,否則,覆蓋原有的文件。 如:FileOutputStream f =new FileOutputStream(“c:/test.txt“,true); 將FileDescriptor對(duì)象作為其參數(shù)。 FileDescriptor() fd =new FileDescriptor(); FileOutputStream f =new FileOutputStream(fd);,【例15.7】,字節(jié)流,字節(jié)流,ByteArrayInputStream 將字節(jié)數(shù)組用作源,并在該數(shù)組中執(zhí)行讀操作 它有兩種構(gòu)造方法。第一種構(gòu)造方法將字節(jié)數(shù)組作為參數(shù)。 ByteArrayInputStream(byte buffer):生成一個(gè)字節(jié)數(shù)組的輸入流,并指定一個(gè)字節(jié)數(shù)組buffer為此輸入流的流緩沖區(qū)。 如:ByteArrayInputStream b =new ByteArrayInputStream(buf); 另外一種構(gòu)造方法有助于從指定的字節(jié)數(shù)組來(lái)創(chuàng)建ByteArrayInputStream。 ByteArrayinputStream b =new ByteArrayinputStream(buf,off,len); 其中off 是要讀取的第一個(gè)字節(jié)的偏移,len 是要讀取數(shù)組的字節(jié)數(shù);,ByteArrayOutputStream有2種構(gòu)造方法 ByteArrayOutputStream():生成一個(gè)字節(jié)數(shù)組的輸出流,其緩沖區(qū)的默認(rèn)初始大小為32字節(jié),若有需要,緩沖區(qū)的大小會(huì)隨之增加。 如:ByteArrayOutPutStream b=new ByteArrayOutputStream(); ByteArrayOutputStream(int size):創(chuàng)建32個(gè)自己的緩沖器用于儲(chǔ)存數(shù)據(jù),但分配size字節(jié)的初始大小給此緩沖區(qū)。 如:ByteArrayOutputStream b1=new ByteArrayOutputStream(size);創(chuàng)建大小為size的緩沖器,ByteArrayOutputStream的一些常用方法: int size():返回此流緩沖區(qū)的大小。 byte toByteArray():生成一個(gè)新的字節(jié)數(shù)組,并將流的內(nèi)容復(fù)制到此字節(jié)數(shù)組。 String toString():將流的內(nèi)容轉(zhuǎn)換為String對(duì)象。,【例15.8】,字節(jié)流,緩沖區(qū)流BufferedInputStream和BufferedOutputStream,BufferedInputStream類的構(gòu)造方法和方法: BufferedInputStream(InputStream in):構(gòu)造一個(gè)BufferedInputStream。 BufferedInputStream(InputStream in, int size):構(gòu)造一個(gè)具有給定的緩沖區(qū)大小的BufferedInputStream。 int available():得到可以從這個(gè)輸入流讀取的字節(jié)數(shù)。 void close():關(guān)閉流。 void mark(int readlimit):在這個(gè)輸入流的當(dāng)前位置做標(biāo)記。 boolean markSupported():檢查這個(gè)輸入流是否支持mark和reset方法。 int read():讀取數(shù)據(jù)的下一個(gè)字節(jié)。 int read(byte b, int off, int len):從這個(gè)字節(jié)輸入流的給定偏移量處開始讀取字節(jié),存儲(chǔ)到給定的字節(jié)數(shù)組。 void reset():將緩沖區(qū)重新設(shè)置到加標(biāo)記的位置。 long skip(long n):跳過(guò)n個(gè)字節(jié)的數(shù)據(jù)。,BufferedOutputStream類的構(gòu)造方法和方法: BufferedOutputStream(OutputStream out):構(gòu)造一個(gè)BufferedOutputStream。 BufferedOutputStream(OutputStream out, int size):構(gòu)造一個(gè)具有給定的緩沖區(qū)大小的BufferedOutputStream。 void flush():刷新這個(gè)流。 void write(byte b, int off, int len):將給定的字節(jié)數(shù)組寫到這個(gè)緩沖輸出流。 void write(int b):將給定的字節(jié)寫到這個(gè)緩沖輸出流。,【例15.9】,字符流,字符流,InputStreamReader和OutputStreamWriter,InputStreamReader類的構(gòu)造方法和方法: InputStreamReader(InputStream in):構(gòu)造一個(gè)InputStreamReader。 InputStreamReader(InputStream in, String enc):使用命名的字符編碼構(gòu)造一個(gè)InputStreamReader。 void close():關(guān)閉流。 String getEncoding():得到字符編碼的名稱。 int read():讀取一個(gè)字符。 int read(char cbuf, int off, int len):將字符讀到數(shù)組中。 boolean ready():如果這個(gè)流已準(zhǔn)備好,返回True。,OutputStreamWriter類的構(gòu)造方法和方法: OutputStreamWriter(OutputStream out):構(gòu)造一個(gè)OutputStreamWriter。 OutputStreamWriter(OutputStream out, String enc):使用命名的字符編碼構(gòu)造一個(gè)OutputStreamWriter。 void close():關(guān)閉流。 void flush():刷新流。 String getEncoding():得到這個(gè)流使用的字符編碼的名稱。 void write(char cbuf, int off, int len):寫字符數(shù)組的一部分。 void write(int c):寫一個(gè)字符。 void write(String str, int off, int len):寫一個(gè)字符串的一部分。,【例15.10】,字符流,FileReader,FileReader(File file):構(gòu)造一個(gè)FileReader。 FileReader(FileDescriptor fd):從一個(gè)文件描述符構(gòu)造一個(gè)FileReader。 FileReader(String filename):從一個(gè)文件名構(gòu)造一個(gè)FileReader。,【例15.11】,字符流,FileWriter,FileWriter(File file):從File對(duì)象構(gòu)造一個(gè)FileWriter。 FileWriter(FileDescriptor fd):從文件描述符構(gòu)造一個(gè)FileWriter。 FileWriter(String filename):從文件名構(gòu)造一個(gè)FileWriter。 FileWriter(String filename, boolean append):構(gòu)造一進(jìn)行附加的FileWriter。,【例15.12】,字符流,BufferedReader和BufferedWriter,這兩個(gè)類對(duì)應(yīng)的流使用了緩沖,能大大提高輸入輸出的效率。這兩個(gè)也是過(guò)濾器流,常用來(lái)對(duì)InputStreamReader和OutputStreamWriter進(jìn)行處理。,【例15.13】,字符流,CharArrayReader和CharArrayWriter,CharArrayReader類的構(gòu)造方法和方法如下: CharArrayReader(char buf):從給定的字符數(shù)組構(gòu)造一個(gè)CharArrayReader。 CharArrayReader(char buf, int offset, int length):同上。 void close():關(guān)閉流。 void mark(int readAheadLimit):在流中的當(dāng)前位置加標(biāo)記。 boolean markSupported():如果這個(gè)流支持mark操作,那么返回True。 int read():讀取一個(gè)字符。 int read(char b, int off, int len):將字符讀入數(shù)組的一部分。 boolean ready():檢查這個(gè)流是否已經(jīng)準(zhǔn)備好被讀取。 void reset():將流重設(shè)到最近的標(biāo)記。 long skip(long n):跳過(guò)n個(gè)字符。,CharArrayWriter類的構(gòu)造方法和方法如下: CharArrayWriter():構(gòu)造一個(gè)CharArrayWriter。 CharArrayWriter(int initialSize):構(gòu)造一個(gè)具有給定初始大小的CharArrayWriter。 void close():關(guān)閉流。 void flush():刷新流。 void reset():重設(shè)流。 int size():得到緩沖區(qū)的當(dāng)前大小。 char toCharArray():得到輸入數(shù)據(jù)的副本。 String toString():將輸入數(shù)據(jù)轉(zhuǎn)換為字符串。 void write(char c, int off, int len):將字符寫到緩沖區(qū)中。 void write(int c):將一個(gè)字符寫到緩沖區(qū)中。 void write(String str, int off, int len):將字符串的一部分寫到緩沖區(qū)中。 void writeTo(Writer out):將緩沖區(qū)的內(nèi)容寫到另一個(gè)字符流中。,【例15.14】,文件的隨機(jī)訪問,RandomAccessFile(File file, String mode):構(gòu)造一個(gè)隨機(jī)訪問文件流,file為被訪問的文件對(duì)象,mode是用來(lái)指定存取的模式,mode可以為r(讀)、w(寫)或rw(讀寫)。 RandomAccessFile(String name,String mode):構(gòu)造一個(gè)隨機(jī)訪問文件流,以便訪問由字符串name指定名字的文件,mode參數(shù)使用同上,boolean readBoolean() byte readByte() char readChar() double readDouble() float readFloat() int readInt() long readLong() short readShort() String readLine(),void writeByte(byte b) void writeBytes(String s) void writeChar(char c) void writeChars(String s) void writeDouble(double d) void writeFloat(float f) void writeInt(int i) void writeLong(long l) void writeShort(short s),void seek(long pos):將文件指針移到pos(不可為負(fù))的位置,相對(duì)于文件初始位置值(初始值為0)。 long getFilePointer():得到目前文件指針的位置(相對(duì)于文件初始位置)。 long length():得到文件的長(zhǎng)度。 int skipBytes( int n ):使文件指針向前移動(dòng)指定的n個(gè)字節(jié),【例15.15】,其他常用的流,管道流,ZIP文件流,DataInputStream和DataOutputStream,對(duì)象流,綜合案例,【例15.16】下面的代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的文件編輯器,import java.awt.*; import java.awt.event.*; import java.io.*; public class FileEdit extends WindowAdapter implements ActionListener,TextListener Frame f; TextArea ta1; Panel p1; TextField tf1; Button b1,b2,b3; FileDialog fd; File file1=null; public static void main(String args) (new FileEdit().display(); ,綜合案例(續(xù)),public void display() f = new Frame(“FileEdit“); f.setSize(680,400); f.setLocation(200,140); f.setBackground(Color.lightGray); f.addWindowListener(this); tf1 = new TextField(); tf1.setEnabled(false); tf1.setFont(new Font(“Dialog“,0,20); /設(shè)置文本行的初始字體 f.add(tf1,“North“); ta1 = new TextArea(); ta1.setFont(new Font(“Dialog“,0,20); /設(shè)置文本區(qū)的初始字體 f.add(ta1); ta1.addTextListener(this); /注冊(cè)文本區(qū)的事件監(jiān)聽程序 p1 = new Panel(); p1.setLayout(new FlowLayout(FlowLayout.LEFT);,綜合案例(續(xù)),b1 = new Button(“Open“); b2 = new Button(“Save“); b3 = new Button(“Save As“); p1.add(b1); p1.add(b2); p1.add(b3); b2.setEnabled(false); b3.setEnabled(false); b1.addActionListener(this); /注冊(cè)按鈕的事件監(jiān)聽程序 b2.addActionListener(this); b3.addActionListener(this); f.add(p1,“South“); f.setVisible(true); public void textValueChanged(TextEvent e) /實(shí)現(xiàn)TextListener接口中的方法,對(duì)文本區(qū)操作時(shí)觸發(fā) b2.setEnabled(true); b3.setEnabled(true); ,綜合案例(續(xù)),public void actionPerformed(ActionEvent e) if (e.getSource()=b1) /單擊打開按鈕時(shí) fd = new FileDialog(f,“Open“,FileDialog.LOAD); fd.setVisible(true); /創(chuàng)建并顯示打開文件對(duì)話框 if (fd.getDirectory()!=null) ,綜合案例(續(xù)),if (e.getSource()=b2)|(e.getSource()=b3) /單擊保存按鈕時(shí) if(e.getSource()=b3)|(e.getSource()=b2) ,綜合案例(續(xù)),else save(file1); public void save(File file1) try /將文本區(qū)內(nèi)容寫入字符輸出流 FileWriter fw = new FileWriter(file1); fw.write(ta1.getText(); fw.close(); b2.setEnabled(false); b3.setEnabled(false); catch (IOException ioe) System.out.println(ioe); public void windowClosing(WindowEvent e) System.exit(0); ,綜合案例(續(xù)),程序運(yùn)行結(jié)果,簡(jiǎn)答練習(xí)題,利用輸入輸出流編寫程序,實(shí)現(xiàn)文件拷貝的功能。,編寫程序,實(shí)現(xiàn)在屏幕上顯示文本文件的功能。,有哪些常用的字節(jié)流和字符流,他們的主要區(qū)別是什么?,對(duì)字節(jié)流和字符流進(jìn)行讀寫操作的一般步驟是什么?,File類有哪些構(gòu)造方法和常用方法?,編寫程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。,【例15.1】標(biāo)準(zhǔn)輸入輸出舉例,標(biāo)準(zhǔn)輸入輸出,輸入輸出流的分類,import java.io.*; public class IODemo public static void main(String args) throws IOException int b; int count=0; while(b=System.in.read()!=-1)count+;System.out.print(char)b); System.out.println(); System.out.println(“program end“); ,程序運(yùn)行如下: 輸入:a,b,c,d 輸出:a,b,c,d 輸入:Z 輸出: program end,【例15.2】對(duì)Test.txt及其上一級(jí)目錄的File類對(duì)象進(jìn)行操作,目錄和文件管理,File類,import java.io.*; public class fileTest /創(chuàng)建一個(gè)文件 public static void main(String args) File f=new File(“parentfileTest.txt“); File f1=new File(“newfileTest.txt“); trySystem.out.println(f.getParent(); System.out.println(f.getName(); System.out.println(f1.getPath(); System.out.println(f1.getAbsolutePath();catch(Exception e)e.printStackTrace(); ,程序運(yùn)行結(jié)果,【例15.3】建立 test.txt 文件對(duì)象,判斷是否存在,如果不存在就創(chuàng)建之,import java.io.*; public class CreateNewFile public static void main(String args) File f=new File(“test.txt“); try if(!f.exists() f.createNewFile(); else System.out.println(“exists“); catch(Exception e) e.printStackTrace(); ,程序運(yùn)行結(jié)果,目錄和文件管理,File類,【例15.4】創(chuàng)建文件夾Dir以及文件夾dir/cdir。,目錄和文件管理,File類,import java.io.*; public class CreateDir public static void main(String args) File f=new File(“test.txt“); File f1=new File(“Dir“); File f2=new File(“dir/cdir“); File f3=new File(“newTest.txt“); try f.renameTo(f3);/把test.txt改名為newTest.txt f1.mkdir(); /創(chuàng)建目錄Dir f2.mkdirs(); /創(chuàng)建目錄dir及其子目錄cdir catch(Exception e)e.printStackTrace(); ,程序運(yùn)行結(jié)果,【例15.5】使用File類的方法獲取文件file.txt的屬性信息,目錄和文件管理,File類的應(yīng)用,import java.io.*; public class file public static void main(String args) File fl = new File(“file.txt“); System.out.println(“The file is exist? “+fl.exists(); System.out.println(“The file can write? “+fl.canWrite(); System.out.println(“The file can read? “+fl.canRead(); System.out.println(“The file is a file? “+fl.isFile(); System.out.println(“The file is a directory? “+fl.isDirectory(); System.out.println(“The file's name is: “+fl.getName(); System.out.println(“The file's all path is: “ + fl.getAbsolutePath(); System.out.println(“The file's length is “+fl.length(); ,程序運(yùn)行結(jié)果,【例15.6】列出Dir目錄下的所有文件和目錄(String list( ),最后修改時(shí)間;若為目錄則在其后面標(biāo)出,若為文件,則在其后面標(biāo)出文件長(zhǎng)度(提示:方法long lastModified()能夠返回自1970.1.1起 到最后修改時(shí)間之間的秒數(shù)),import java.io.*; import java.util.*; public class testDir public static void main(String args) File f=new File(“Dir“); String listAll=null; File temp=null; try listAll=f.list(); for(int i=0;it“); else System.out.print(temp.length()+“t“); System.out.println(new Date(temp.lastModified(); catch(Exception e)e.printStackTrace(); ,目錄和文件管理,File類的應(yīng)用,程序運(yùn)行結(jié)果,字節(jié)流,【例15.7】將FileIO.java復(fù)制為FileExam.java.bak,import java.io.*; public class FileIO public static void main(String args) FileInputStream inFile=null; FileOutputStream outFile=null; tryinFile=new FileInputStream(“FileIO.java“); outFile=new FileOutputStream(“FileExam.java.bak“); int date; while(date=inFile.read()!=-1)outFile.write(date); catch(FileNotFoundException e)System.out.println(e.getMessage(); catch(IOException e)System.out.println(e.getMessage(); finallyif(inFile!=null)tryinFile.close();catch(IOException e) if(outFile!=null)tryoutFile.close();catch(IOException e) ,程序運(yùn)行結(jié)果,【解題分析】以下問題的求解過(guò)程可分解如下: 先打開文件FileExam.java 用read()將其內(nèi)容逐字節(jié)讀取出來(lái)(如果返回值為-1,則表明已到達(dá)文件尾端) 再用write()將讀出的字節(jié)逐一寫入另一個(gè)文件FileExam.java.bak中 若文件無(wú)法打開(例如FileExam.java不存在)或無(wú)法生成(FileExam.java.bak),則拋出FileNotFoundException異常,若讀寫出錯(cuò),則拋出IOException異常。 最后,在finally中關(guān)閉文件。,【例15.8】程序讀入文件ByteIO.java,將其內(nèi)容寫入內(nèi)存中(一個(gè)字節(jié)數(shù)組),接著轉(zhuǎn)換為String對(duì)象,并將該String對(duì)象內(nèi)的令牌解析出來(lái),字節(jié)流,import java.io.*; import java.util.*; public class ByteIO public static void main(String args) tryFile inFile=new File(“FileIO.java“); FileInputStream inData=new FileInputStream(inFile); ByteArrayOutputStream dataArray=new ByteArrayOutputStream(); int data; while(data=inData.read()!=-1)dataArray.write(data); inData.close(); String dataStr=dataArray.toString(); StringTokenizer tokens=new StringTokenizer(dataStr); while(tokens.hasMoreTokens()System.out.println(tokens.nextToken(); catch(IOException e)System.out.println(e.getMessage(); ,程序運(yùn)行結(jié)果,【例15.9】文件拷貝的緩沖改進(jìn),字節(jié)流,/文件拷貝的緩沖改進(jìn) import java.io.*; public class Copy public static void main(String args) BufferedInputStream bis=null; BufferedOutputStream bos=null; byte buf=new byte100; try bis=new BufferedInputStream(new FileInputStream(“test.txt“); bos=new BufferedOutputStream(new FileOutputStream(“testcopy.txt“); int len=0; while( true ) len=bis.read(buf); if(len=0) break; bos.write(buf,0,len); bos.flush();/緩沖區(qū)只有滿時(shí)才會(huì)將數(shù)據(jù)輸出到輸出流,用flush()將未滿的緩沖區(qū)中數(shù)據(jù)強(qiáng)制輸出 catch(Exception e)e.printStackTrace(); finally if(bis != null) try bis.close(); catch(Exception e) e.printStackTrace(); if(bos!= null) try bos.close(); catch(Exception e) e.printStackTrace(); ,程序運(yùn)行結(jié)果,【例15.10】利用InputStreamReader從鍵盤接受輸入,再將輸入的字符顯示出來(lái),字符流,import java.io.*; class inputstreamreader public static void main(String args) try int character; InputStreamReader instreamread = new InputStreamReader(System.in); /InputStreamReader以字符形式讀取輸入 while (character = instreamread.read() != -1) System.out.print(char) character); catch (IOException e) System.out.print(“Bye”); ,程序運(yùn)行結(jié)果如下: 輸入:a,b,c,d 輸出:a,b,c,d 輸入:1,2,3,4 輸出:1,2,3,4 輸入:Z 輸出:Bye,【例15.11】下例中打開一個(gè)文件file.txt(內(nèi)容為:Hello from file),將文件的內(nèi)容讀到緩沖區(qū),然后顯示數(shù)據(jù),字符流,import java.io.*; public class fileread public static void main(String args) throws Exception FileReader fileread = new FileReader(“file.txt“);/打開文件 char data = new char1024; int charsread = fileread.read(data);/讀入 System.out.println(new String(data,0,charsread);/顯示 fileread.close();/關(guān)閉文件流 ,程序運(yùn)行結(jié)果,字符流,【例15.12】下例中,分別采用三種方式:逐字符地寫數(shù)據(jù)、一次寫入所有數(shù)據(jù)、分批寫數(shù)據(jù),使用類FileWriter,import java.io.*; public class filewrite public static void main(String args) throws Exception char data='T','h','i','s',' ','i','s',' ','a',' ','s','t','r','i','n','g',' ','o','f',' ','t','e','x','t','.' FileWriter filewriter1=new FileWriter(“file1.txt“); for(int loop_index=0;loop_indexdata.length;loop_index+)filewriter1.write(dataloop_index); FileWriter filewriter2=new FileWriter(“file2.txt“); filewriter2.write(data); FileWriter filewriter3=new FileWriter(“file3.txt“); filewriter3.write(data,5,10); filewriter1.close(); filewriter2.close(); filewriter3.close(); ,程序執(zhí)行后: file1.txt和file2.txt的內(nèi)容為:This is a string of text。 file3.txt的內(nèi)容為:is a strin。,字符流,【例15.13】從鍵盤接受輸入并回顯,import java.io.*; public class Echotest public static void main(String args) BufferedReader in =new BufferedReader(new InputStreamReader(System.in); String s; System.out.print(“please enter a string:“); try while(s = in.readLine().length() != 0) System.out.println(“輸入是:“+s); catch(IOException e) e.printStackTrace(); ,程序運(yùn)行結(jié)果,字符流,【例15.14】下例演示CharArrayReader類的作用,該例從字符數(shù)組中逐個(gè)讀取字符并顯示,chararrayreader.java import java.io.*; public class chararrayreader public static void main(String args) throws IOException char data = 'T','h','i','s',' ','i','s',' ','a', ' ','s', 't','r','i','n','g',' ','o','f',' ','t','e','x','t','.' CharArrayReader chararrayreader = new CharArrayReader(data); int character; while(character = chararrayreader.read() != -1) System.out.print(char)character); ,程序運(yùn)行結(jié)果為: This is a string of text.,文件的隨機(jī)訪問,【例15.15】把若干個(gè)32位整數(shù)寫到一個(gè)名為test.txt的文件中,利用seek()方法,以相反的順序讀取這些數(shù)據(jù),import java.io.*; public class RandomFile public static void main(String args) RandomAccessFile raf=null; int data=12,31,56,23,27,1,43,65,4,99; try raf=new RandomAccessFile(“test.txt“,“rw“); for(int i=0;i=0;i-) raf.seek(i*4); System.out.println(raf.readInt(); catch(Exception e)e.getMessage(); finally if(raf!=null) tryraf.close();catch(Exception e)e.getMessage(); ,程序運(yùn)行結(jié)果,再 見,謝謝你的配合!,

注意事項(xiàng)

本文(程序設(shè)計(jì)第15章輸入輸出流和文件操作ppt課件)為本站會(huì)員(鐘***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!