Java實(shí)用教程第16講IO(一)_第1頁
Java實(shí)用教程第16講IO(一)_第2頁
Java實(shí)用教程第16講IO(一)_第3頁
Java實(shí)用教程第16講IO(一)_第4頁
Java實(shí)用教程第16講IO(一)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第16講講 I/O一)一) 16.1 File類類 16.2 文件過濾器文件過濾器 16.3 流流 16.4 字節(jié)流和緩沖字節(jié)流字節(jié)流和緩沖字節(jié)流 16.5 字符流和緩沖字節(jié)流字符流和緩沖字節(jié)流 16.6 本講小結(jié)本講小結(jié) Java提供了豐富的類以實(shí)現(xiàn)與文件、控制臺、網(wǎng)絡(luò)等進(jìn)行通信,而通信的方式可以按字節(jié)或字符的方式進(jìn)行,可以是順序讀取數(shù)據(jù),也可以是隨機(jī)讀取數(shù)據(jù)。16.1 File類類 File類的對象既可以表示文件,也表示目錄。我們可以在相對路徑下創(chuàng)建文件或目錄,也可以在絕度路徑下創(chuàng)建文件或路徑。在創(chuàng)建文件或路徑時,要特別注意路徑中文件的分隔符,不同的操作系統(tǒng)中,文件分隔符是不同?!?”是

2、UNIX下的分隔符,而Windows下為“”,為了使程序具有良好的移植性,最好使用File.separator。16.2 文件過濾器文件過濾器 我們還可以做一個文件過濾器,只列出符合條件的文件。下面代碼列出當(dāng)前目錄下所有的.txt文件: public class FileFilter String suffix; public void showFiles(String path,String suffix) this.suffix = suffix; File file = new File(path); String name = file.list(new MyFileFilter();

3、 for(int i = 0;i name.length;i+) System.out.println(namei); class MyFileFilter implements FilenameFilter public boolean accept(File dir,String name) return name.endsWith(suffix); 16.3 流流 Java使用流的方式讀寫硬盤、內(nèi)存、鍵盤等設(shè)備上的數(shù)據(jù)。按照流的方向,可以分為輸入流和輸出流。按照要處理的數(shù)據(jù)類型,可以分為字節(jié)流和字符流。 java.io包中。所有輸入流類是InputStream和Reader的子類,所有輸

4、出流類都是OutputStream和Writer的子類。其中InputStream和OutputStream表示字節(jié)流,Reader和Writer表示字符流。16.4 字節(jié)流和緩沖字節(jié)流字節(jié)流和緩沖字節(jié)流 字節(jié)流可以處理所有類型的數(shù)據(jù),視頻、音頻、圖片、文本等,讀取時按照字節(jié)讀取,讀到一個字節(jié)就返回一個字節(jié)。/字節(jié)流處理讀寫文本文件的示例import java.io.*;public class RWByStreamOne public static void main(String args) try FileInputStream fis = new FileInputStream(tes

5、t.txt); FileOutputStream fos = new FileOutputStream(test_new.txt); byte b = new byte10;int a = 0;while(a = fis.read(b)!=-1) fos.write(b, 0, a); fos.flush();fos.close();fis.close(); catch (IOException e) e.printStackTrace();/緩沖字節(jié)流讀取視頻文件的示例import java.io.*;public class RWByBufferedStream public static

6、 void main(String args) try FileInputStream fis = new FileInputStream(a.mp4); /內(nèi)存的大小是經(jīng)驗(yàn)值,可以通過多次運(yùn)行程序而定BufferedInputStream bis = new BufferedInputStream(fis,1024*100);FileOutputStream fos = new FileOutputStream(a_new.mp4);BufferedOutputStream bos = new BufferedOutputStream(fos,1024*100);byte b = new b

7、yte100;int a = 0;long start = System.currentTimeMillis();while(a = bis.read(b)!=-1)bos.write(b, 0, a);bos.flush();bos.close();fos.close();bis.close();fis.close();long stop = System.currentTimeMillis();System.out.println(所用時間:+(stop-start)+ms); catch (IOException e) e.printStackTrace();16.5 字符流和緩沖字符流

8、字符流和緩沖字符流 字符流只能處理純文本數(shù)據(jù),讀取時,讀取一個或多個字符,然后查找指定的編碼表,將查到的字符返回。public class RWByReaderAndWriter public static void main(String args) tryFileReader fis = new FileReader(test.txt);FileWriter fos = new FileWriter(test_new.txt);char b = new char10;int a = 0;while(a = fis.read(b)!=-1)fos.write(b, 0, a);fos.flu

9、sh();fos.close();fis.close(); catch (IOException e) e.printStackTrace();緩沖字符流可以提高字符流的讀取效率,示例代碼如下:public class RWByBufferedChar public static void main(String args) try FileReader fis = new FileReader(test.txt);BufferedReader br = new BufferedReader(fis);FileWriter fos = new FileWriter(test_new.txt);

10、BufferedWriter bw = new BufferedWriter(fos);String s;while(s = br.readLine()!=null) bw.write(s+n); bw.flush();bw.close();fos.close(); br.close();fis.close(); catch (IOException e) e.printStackTrace(); Java還提供了一個高效輸出字符串的類:PrintWriter。示例代碼如下:import java.io.*;public class RByPrintWriter public static v

11、oid main(String args) tryFileReader fis = new FileReader(test.txt);BufferedReader br = new BufferedReader(fis);PrintWriter pw = new PrintWriter(test_new.txt);String s;while(s = br.readLine()!=null)pw.println(s);pw.flush();pw.close();br.close();fis.close(); catch (IOException e) e.printStackTrace();16.6 本講小結(jié)本講小結(jié) 本講

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論