![文件輸入輸出_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/31/8713726c-eaa8-48d3-a20d-864c3ee2aeab/8713726c-eaa8-48d3-a20d-864c3ee2aeab1.gif)
![文件輸入輸出_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/31/8713726c-eaa8-48d3-a20d-864c3ee2aeab/8713726c-eaa8-48d3-a20d-864c3ee2aeab2.gif)
![文件輸入輸出_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/31/8713726c-eaa8-48d3-a20d-864c3ee2aeab/8713726c-eaa8-48d3-a20d-864c3ee2aeab3.gif)
![文件輸入輸出_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/31/8713726c-eaa8-48d3-a20d-864c3ee2aeab/8713726c-eaa8-48d3-a20d-864c3ee2aeab4.gif)
![文件輸入輸出_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/31/8713726c-eaa8-48d3-a20d-864c3ee2aeab/8713726c-eaa8-48d3-a20d-864c3ee2aeab5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1Java語言程序設(shè)計2Java I/O操作n概念nJava I/O類nJava I/O操作n標(biāo)準(zhǔn)輸入/輸出n文件讀寫操作n目錄管理n隨機訪問文件n文件屬性3概念nI/O來源n控制臺(console, 如DOS窗口)打印/讀入n文件(file)讀/寫n網(wǎng)絡(luò)接口(TCP/UDP端口)讀/寫n針對數(shù)據(jù)的讀寫n以流(stream)的方式對數(shù)據(jù)進行操作數(shù)據(jù)源程序讀出數(shù) 據(jù)流目的程序?qū)懭霐?shù) 據(jù)流流的重要特性n順序讀/寫nsequentially4概念n讀/寫流的一般流程n讀(Reading)1.open a stream /打開讀出流2.while more information /判斷3. read
2、 information /讀4.close the stream /關(guān)閉流n寫(Writing)1.open a stream /打開寫入流2.while more information /判斷3. write information /寫4.close the stream /關(guān)閉流5概念n兩種流的定義(讀取信息的基本數(shù)據(jù)單位)n字節(jié)流(byte stream): 一個字節(jié)(8-bit)一個字節(jié)讀/寫n字符流(character stream):一個字符一個字符讀/寫(具有特定字符編碼的數(shù)據(jù))j a v a 語 言6A 61 76 61 D3 EF D1 D4以字節(jié)流的方式讀: 讀8次,
3、8個字節(jié)以字符流的方式讀: 讀6次,6個字符6Java I/O操作n概念nJava I/O類nJava I/O操作n標(biāo)準(zhǔn)輸入/輸出n文件讀寫操作n目錄管理n隨機訪問文件n文件屬性7Java I/O類n字節(jié)流的讀/寫操作(來自JDK1.0)njava.io.InputStream (抽象類)1.public abstract int read()2.public int read(byte b)3.public int read(byte b, int offset, int length)4.到達流的終點,無數(shù)據(jù)讀出則返回-1njava.io.OutputStream (抽象類)1.publi
4、c abstract void write(int b)2.public void write(byte b)3.public void write(byte b, int offset, int length) n所有的讀/寫函數(shù)都拋出java.io.IOException8Java I/O類n字符流的讀/寫操作(來自JDK1.1)njava.io.Reader (抽象類)1.public int read()2.public int read(char cbuf)3.publc abstract int read(char cbuf, int offset, int length)4.到達
5、流的終點,無數(shù)據(jù)讀出則返回-1njava.io.Writer (抽象類)1.public void write(int c)2.public void write(char cbuf)3.public void write(char cbuf, int offset, int length)n所有的讀/寫函數(shù)都拋出java.io.IOException9Java I/O類nI/O流的層次關(guān)系nclass java.io.InputStream的子類nclass java.io.ByteArrayInputStreamnclass java.io.FileInputStreamnclass ja
6、va.io.FilterInputStreamnclass java.io.BufferedInputStreamnclass java.io.DataInputStream nclass java.io.LineNumberInputStreamnclass java.io.PushbackInputStreamnclass java.io.ObjectInputStream nclass java.io.PipedInputStreamnclass java.io.SequenceInputStreamnclass java.io.StringBufferInputStreamn 10Ja
7、va I/O類nI/O流的層次關(guān)系nclass java.io.OutputStream的子類nclass java.io.ByteArrayOutputStreamnclass java.io.FileOutputStreamnclass java.io.FilterOutputStreamnclass java.io.BufferedOutputStreamnclass java.io.DataOutputStream nclass java.io.PrintStreamnclass java.io.ObjectOutputStreamnclass java.io.PipedOutputS
8、treamn 11Java I/O類nI/O流的層次關(guān)系nclass java.io.Reader的子類nclass java.io.BufferedReadernclass java.io.LineNumberReadernclass java.io.CharArrayReadernclass java.io.FilterReader nclass java.io.PushbackReadernclass java.io.InputStreamReadernclass java.io.FileReadernclass java.io.PipedReadernclass java.io.Str
9、ingReadern 12Java I/O類nI/O流的層次關(guān)系nclass java.io.Writer的子類nclass java.io.BufferedWriternclass java.io.CharArrayWriternclass java.io.FilterWriternclass java.io.OutputStreamWriter nclass java.io.FileWriternclass java.io.PipedWriternclass java.io.PrintWriternclass java.io.StringWritern 13Java I/O類nI/O流的分
10、類 (12個功能類)I/O類型所用到的類描述文件FileReader/FileWriterFileInputStream/FileOutputStream文件流(讀/寫文件)緩沖BufferedReader/BufferedWriterBufferedInputStreamBufferedOutputStream提高讀/寫效率打印PrintWriter PrintStream (System.out.println()內(nèi)存CharArrayReader/CharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReader/St
11、ringWriterStringBufferInputStream讀/寫內(nèi)存14Java I/O類nI/O流的分類 (12個功能類)I/O類型所用到的類描述字節(jié)流和字符流的轉(zhuǎn)換InputStreamReaderOutputStreamWriter將InputStream中讀入的字節(jié)轉(zhuǎn)為字符/將字符轉(zhuǎn)為字節(jié)寫入OutputStream管道pipePipedReader/PipedWriterPipedInputStream/PipedOutputStream文件流(讀/寫文件)連接ConcatenationSequenceInputStream多個輸入流連接為一個輸入流對象串行化ObjectIn
12、putStreamObjectOutputStreamObject Serialization15Java I/O類nI/O流的分類 (12個功能類)I/O類型所用到的類描述基本數(shù)據(jù)轉(zhuǎn)化DataInputStreamDataOutputStreamJAVA基本數(shù)據(jù)類型的讀/寫計數(shù)LineNumberReaderLineNumberInputStream讀操作時記錄行數(shù)Peeking AheadPushbackReaderPushbackInputStream可回退緩存(pushback buffer)過濾FilterReader/FilterWriterFilterInputStream/Fi
13、lterOutputStream在讀/寫操作時對數(shù)據(jù)進行過濾16Java I/O操作n概念nJava I/O類nJava I/O操作n標(biāo)準(zhǔn)輸入/輸出n文件讀寫操作n目錄管理n隨機訪問文件n文件屬性17Java I/O操作n主要內(nèi)容1.標(biāo)準(zhǔn)輸入/輸出n控制臺屏幕打印和鍵盤讀入2.文件I/O操作n文件讀寫n如何提高文件讀寫效率n流的包裝(Wrap)n基本數(shù)據(jù)轉(zhuǎn)換流n目錄管理n隨機訪問文件(Random Access File)n文件屬性18n輸出: 控制臺屏幕打印class Test public static void main(String args) System.out.println(“
14、Hello World!”);標(biāo)準(zhǔn)輸入/輸出19n輸入: 鍵盤讀入import java.io.IOException;class Test public static void main(String args) throws IOException byte b = new byte10;System.out.println(Received number= + System.in.read(b);標(biāo)準(zhǔn)輸入/輸出C:java TestAReceived number=3C:20n文件讀/寫流程1.打開文件流2.條件判斷3.讀出/寫入4.關(guān)閉文件流n兩種類型文件nFileInputStrea
15、m/FileOutputStream (字節(jié)流)nFileReader/FileWriter (字符流)文件讀寫操作211.字節(jié)流構(gòu)造方法npublic FileInputStream(File file) throws FileNotFoundExceptionnpublic FileInputStream(String name) throws FileNotFoundExceptionnpublic File(String pathname)npublic FileOutputStream(File file) throws FileNotFoundExceptionnpublic Fi
16、leOutputStream(File file, boolean append) throws FileNotFoundException /是否向已存在的文件后添加npublic FileOutputStream(String name) throws FileNotFoundExceptionnpublic FileOutputStream(String name, boolean append) throws FileNotFoundException文件讀寫操作22n文件讀寫-實例1文件讀寫操作import java.io.*;public class CopyBytes publi
17、c static void main(String args) throws IOException File inputFile = new File(“original.txt); File outputFile = new File(“result.txt); FileInputStream in = new FileInputStream(inputFile); FileOutputStream out = new FileOutputStream(outputFile); int c; while (c = in.read() != -1) out.write(c); in.clos
18、e(); out.close(); public int read ()throws IOExceptionpublic int read (byte b) throws IOExceptionpublic int read (byte b, int off, int len) throws IOExceptionFileInputStream in = new FileInputStream(“original.txt);FileOutputStream out = new FileOutputStream(“result.txt);public void write (int b) thr
19、ows IOExceptionpublic void write (byte b) throws IOExceptionpublic void write (byte b, int off, int len) throws IOException232.字符流構(gòu)造方法npublic FileReader(File file) throws FileNotFoundExceptionnpublic FileReader(String fileName) throws FileNotFoundExceptionnpublic File(String pathname)npublic FileWri
20、ter(File file) throws IOExceptionnpublic FileWriter(File file, boolean append) throws IOExceptionnpublic FileWriter(String fileName) throws IOExceptionnpublic FileWriter(String fileName, boolean append) throws IOException文件讀寫操作24n文件讀寫-實例2文件讀寫操作import java.io.*;public class Copy public static void ma
21、in(String args) throws IOException File inputFile = new File(“original.txt); File outputFile = new File(“result.txt); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while (c = in.read() != -1) out.write(c); in.close(); out.close(); FileReader in = new
22、FileReader(“original.txt);FileWriter out = new FileWriter(“result.txt);public int read () throws IOExceptionpublic int read (char cbuf) throws IOExceptionpublic int read (char cbuf, int off, int len) throws IOExceptionpublic void write (int b) throws IOExceptionpublic void write (char cbuf) throws I
23、OExceptionpublic void write (char cbuf, int off, int len) throws IOException25n兩類緩沖流n針對字節(jié)流njava.io.BufferedInputStream類njava.io.BufferedOutputStream類n針對字符流njava.io.BufferedReader類njava.io.BufferedWriter類如何提高文件讀寫效率26n構(gòu)造方法npublic BufferedInputStream(InputStream in) 2048 bytesnpublic BufferedInputStrea
24、m(InputStream in, int size)npublic BufferedOutputStream(OutputStream out) 512 bytesnpublic BufferedOutputStream(OutputStream out, int size)npublic BufferedReader(Reader in) 8192 bytesnpublic BufferedReader(Reader in, int sz)npublic BufferedWriter(Writer out) 8192 bytenpublic BufferedWriter(Writer ou
25、t, int sz)如何提高文件讀寫效率27 String filename = “test.txt”; FileInputStream fis = new FileInputStream(filename); int count = 0; int c; while (c = fis.read() != -1) if (c = A) count+; fis.close(); System.out.println(count);n如何提高文件讀寫效率-實例1如何提高文件讀寫效率 String filename = “test.txt”; FileInputStream fis = new Fil
26、eInputStream(filename); BufferedInputStream bis = new BufferedInputStream(fis); int count = 0; int c; while (c = bis.read() != -1) if (c = A) count+; fis.close(); System.out.println(count); FileInputStream fis = new FileInputStream(“test.txt”); int count = 0; final int BUFSIZE = 1024; byte buf = new
27、 byteBUFSIZE; int len; while (len = fis.read(buf) != -1) for (int i = 0; i len; i+) if (bufi = A) count+; fis.close();28 String filename = “test.txt”; FileReader fr = new FileReader(filename); BufferedReader br = new BufferedReader(fr); int count = 0; while (br.readLine() != null) count+; br.close()
28、; System.out.println(count);n如何提高文件讀寫效率-實例2如何提高文件讀寫效率29n概述流的包裝(wrap) FileReader fr = new FileReader (filename); BufferedReader br = new BufferedReader (fr); BufferedReader br = new BufferedReader ( new FileReader(filename); PrintWriter out = new PrintWriter ( new BufferedWriter(new FileWriter(filena
29、me); public String readLine() in java.io.BufferedReader public void println(String x) in java.io.PrintWritern利用不同流的特點(方法)n尋找合適的方法完成特定的需求n對已有的流進行再處理30n流的種類n節(jié)點流n直接對數(shù)據(jù)源進行讀/寫操作的流n處理流n對一個已有的流進行某種操作的流流的包裝(wrap)31n節(jié)點流nFileInputStream, PipedInputStream, ByteArrayInputStream, StringBufferInputStreamnFileOutp
30、utStream, PipedOutputStream, ByteArrayOutputStreamnCharArrayReader, FileReader, PipedReader, StringReadernCharArrayWriter, FileWriter, PipedWriter, StringWriter流的包裝(wrap)32n處理流nFilterOutputStream, DataOutputStream, BufferedOutputStream, PrintStreamnFilterInputStream, LineNumberInputStream, DataInput
31、Stream, BufferedInputStream, PushbackInputStreamnBufferedReader, LineNumberReader, InputStreamReader, FilterReader, PushBackReadernBufferedWriter, OutputStreamReader, FilterWriter, PrintWriter流的包裝(wrap)33n一個實例njava.io.FileReadernpublic FileReader(File file) throws FileNotFoundExceptionnpublic FileRe
32、ader(String fileName) throws FileNotFoundExceptionnjava.io.BufferedReadernpublic BufferedReader(Reader in) 8192 bytesnpublic BufferedReader(Reader in, int sz)n流的包裝改變了流的行為流的包裝(wrap)34n流的包裝(wrap)-實例1流的包裝(wrap)import java.io.*;public class Echo public static void main(String args) throws IOException Bu
33、fferedReader in = new BufferedReader( new InputStreamReader(System.in); String s; while(s = in.readLine().length() != 0) System.out.println(s); public static final InputStream in (java.lang.System)public InputStreamReader(InputStream in)public BufferedReader(Reader in)程序如何結(jié)束(跳出while循環(huán))?35n概述njava.io
34、.DataInputStream類npublic DataInputStream(InputStream in)npublic final boolean readBoolean()npublic final byte readByte()npublic final char readChar()npublic final int readInt()njava.io.DataOutputStream類npublic DataOutputStream(OutputStream out)npublic final void writeBoolean(boolean v)npublic final
35、void writeByte(int v)npublic final void writeChar(int v)npublic final void writeInt(int v)基本數(shù)據(jù)轉(zhuǎn)換流36DataOutputStream out = new DataOutputStream(new FileOutputStream(invoice1.txt);double prices = 19.99, 9.99;int units= 12, 8;String descs = Java T-shirt, Java Mug;for (int i = 0; i prices.length; i +) o
36、ut.writeDouble(pricesi);out.writeChar(t);out.writeInt(unitsi);out.writeChar(t);out.writeChars(descsi);out.writeChar(n);out.close();n基本數(shù)據(jù)轉(zhuǎn)換流-實例基本數(shù)據(jù)轉(zhuǎn)換流DataInputStream in = new DataInputStream( new FileInputStream(invoice1.txt);double total;try while (true) double price = in.readDouble(); in.readChar()
37、; int unit = in.readInt(); in.readChar(); char chr; StringBuffer desc = new StringBuffer(20);while (chr = in.readChar()!= n) desc.append(chr);System.out.println(Youve ordered + unit + units of + desc + at $ + price); total = total + unit * price; catch (EOFException e) System.out.println(For a TOTAL
38、 of: $ + total);in.close();19.99 12 Java T-shirt9.99 8 Java Mug 37n概述njava.io.File類: 文件和目錄的路徑名n構(gòu)造方法npublic File(String pathname)npublic File(String parent, String child)npublic File(File parent, String child)nparent通常表示一個目錄, child則表示一個目錄或文件n路徑名(pathname)nUNIX平臺上絕對路徑的前綴“/”,相對路徑無前綴,例“/etc/inetd.conf”、
39、“inetd.conf”nWindows平臺,絕對路徑名的前綴由“盤符:”組成;UNC 路徑名前綴為“”,然后是主機名和共享名,相對路徑名無盤符,例“c:windowsnotepad.exe”、“notepad.exe”目錄管理38n方法npublic boolean canWrite()/canRead()npublic boolean exists()npublic boolean delete() 刪除文件或目錄,若刪除目錄,要求該目錄必須為空npublic boolean createNewFile() 創(chuàng)建一個空文件,當(dāng)且僅當(dāng)該文件不存在npublic boolean isDirec
40、tory()/isFile()/isHidden()npublic long lastModified()/public boolean setLastModified(long time)npublic String list() 得到當(dāng)前目錄下的所有文件名和目錄名,若該File對象不是表示目錄,則返回nullnpublic boolean mkdir()/mkdirs() 創(chuàng)建一個目錄npublic boolean renameTo(File dest)npublic boolean setReadOnly()目錄管理39n目錄管理方法舉例目錄管理import java.io.File;p
41、ublic class DirList public static void main(String args) File path = new File(.);String list = path.list();for(int i = 0; i list.length; i+)System.out.println(listi);40n目錄管理方法舉例目錄管理import java.io.File;import java.io.FilenameFilter;public class DirList public static void main(String args) File path =
42、 new File(.);String list = path.list(new DirFilter(args0); for (int i = 0; i list.length; i+) System.out.println(listi);class DirFilter implements FilenameFilter String key; DirFilter(String key) this.key = key; public boolean accept(File dir, String name) String f = new File(name).getName();return
43、f.indexOf(key) != -1; java.util.FilenameFilter 接口 public boolean accept(File dir, String name); /是否指定的文件應(yīng)包含在文件列表中public String getName() in java.io.File/獲得文件或目錄名,僅僅是最后的部分41n隨機訪問文件(Random Access File)njava.io.RandomAccessFile類n讀寫操作在同一個類中完成,須在構(gòu)造對象時指定參數(shù)n通過移動文件指針(file pointer)在文件的指定位置進行讀寫操作n構(gòu)造方法npublic
44、RandomAccessFile(String name, String mode) throws FileNotFoundExceptionnpublic RandomAccessFile(File file, String mode) throws FileNotFoundExceptionnmode: “r”, “rw”隨機訪問文件42n方法npublic void seek(long pos) npublic int read()npublic int read(byte b)npublic int read(byte b, int off, int len)npublic final
45、 boolean readBoolean()/readByte()/readChar()/readShort()/readInt()/readDouble()/readFloat()npublic final String readLine()npublic void write(int b)npublic void write(byte b)npublic void write(byte b, int off, int len)npublic final void writeBoolean()/writeByte()/writeChar()/writeShort()/writeInt()/w
46、riteDouble()/writeFloat()隨機訪問文件43n隨機訪問文件(Random Access File)-實例隨機訪問文件RandomAccessFile rf = new RandomAccessFile(rtest.dat, rw);for(int i = 0; i 10; i+)rf.writeDouble(i*1.414);rf.close();rf = new RandomAccessFile(rtest.dat, rw);rf.seek(5*8);rf.writeDouble(47.0001);rf.close();rf = new RandomAccessFile
47、(rtest.dat, r);for(int i = 0; i 10; i+)System.out.println(Value + i + : + rf.readDouble();rf.close();運行結(jié)果:Value 0: 0.0Value 1: 1.414Value 2: 2.828Value 3: 4.242Value 4: 5.656Value 5: 47.0001Value 6: 8.484Value 7: 9.898Value 8: 11.312Value 9: 12.72599999999999944n文件的特性n讀和寫的權(quán)限n文件長度n修改時間n是否是目錄njava.io.File類n設(shè)定文件屬性n查詢文件屬性文件屬性45文件屬性n獲取文件路徑import java.io.*;class AttrDemo1 public static void main(String args) throws IOException File testfile = new File(. + File.separatorChar + testfile1); testfile.createNewFile(); System.out.println(name = + testfile.getName();
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款擔(dān)保人協(xié)議書
- 軟件開發(fā)和測試技術(shù)作業(yè)指導(dǎo)書
- 策劃推廣服務(wù)合同
- 數(shù)據(jù)挖掘與商業(yè)智能解決方案作業(yè)指導(dǎo)書
- XXX高校報告廳項目會議播音系統(tǒng)設(shè)計方案
- 農(nóng)業(yè)產(chǎn)業(yè)化環(huán)境保護方案
- 小學(xué)二年級數(shù)學(xué)上學(xué)期口算訓(xùn)練 打印版
- 2025年益陽貨運從業(yè)資格證模擬考試保過版
- 2025年貴陽貨運從業(yè)資格證考試模擬考試題庫答案解析
- 疼痛管理服務(wù)合同(2篇)
- 大學(xué)生心理健康教育全套PPT完整教學(xué)課件
- 安慶匯辰藥業(yè)有限公司高端原料藥、醫(yī)藥中間體建設(shè)項目環(huán)境影響報告書
- 政治校本課程
- 川2020J146-TJ 建筑用輕質(zhì)隔墻條板構(gòu)造圖集
- (完整)讀歌詞猜歌名
- 八年級下開學(xué)第一課主題班會
- 初中英語人教版 八年級上冊 單詞默寫表 漢譯英
- pcs-9611d-x說明書國內(nèi)中文標(biāo)準(zhǔn)版
- GB/T 1634.1-2004塑料負(fù)荷變形溫度的測定第1部分:通用試驗方法
- 無人機航拍技術(shù)理論考核試題題庫及答案
- T∕CMATB 9002-2021 兒童肉類制品通用要求
評論
0/150
提交評論