版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》Java中的文件操作本講目標(biāo)◆文件處理
(File類(lèi))◆I/O
流概述◆掌握J(rèn)ava流類(lèi)的分類(lèi)◆常見(jiàn)的字節(jié)流:InputStream、OutputStream、
FilelnputStream、FileOutputStream、DatalnputStream、DataOutputStream、BufferedlnputStream、BufferedOutputStream、
System.in、System.out等◆字符流:Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、FileWriterCharArrayReader、CharArrayWriter、BufferedReader、
BufferedWriter對(duì)象流:ObjectlnputStream、ObjectOutputStream。《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文件處理⑩
I/O處理中,最常見(jiàn)的是對(duì)文件的操作,
java.io包中有關(guān)
文件處理的類(lèi)有:
File
、FilelnputStream、FileOutputStream。⑩
這里先講解File。文件處理⑩文件描述類(lèi)java.io.File提供了一種與機(jī)器無(wú)關(guān)的方式來(lái)描述一個(gè)文件對(duì)象
的屬性;代表系統(tǒng)文件或者系統(tǒng)路徑的抽象類(lèi)。⑩
File類(lèi)的常見(jiàn)構(gòu)造方法:public
File(String
path)注意:如果path是實(shí)際存在的路徑,則該File對(duì)象表示的是目錄;
如果path是文件名,則該File對(duì)象表示的是文件。public
File(String
path,String
name)注意:path是路徑名,
name
是文件名public
File(Filedir,Stringname)注
意
:dir是路徑名,name是文件名《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文件處理⑩文件描述⑩文件或目錄的生成:String
getName();//得到一個(gè)文件的名稱(chēng)(不包括路徑)
String
getPath();//得到一個(gè)文件的路徑名String
getAbsolutePath();//得到一個(gè)文件的絕對(duì)路徑名
String
getParent();//得到一個(gè)文件的上一級(jí)目錄名String
renameTo(File
newName);//將當(dāng)前文件名更名為給定文件
的完整路徑《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文件處理⑩文件描述⑩文件屬性測(cè)試boolean
exists();//測(cè)試當(dāng)前File對(duì)象所指的文件是否存在
boolean
canWrite();//測(cè)試當(dāng)前文件是否可寫(xiě)boolean
canRead();//測(cè)試當(dāng)前文件是否可讀boolean
isFile();//測(cè)試當(dāng)前文件是否是文件(不是目錄)
boolean
isDirectory();//測(cè)試當(dāng)前文件是否是目錄《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文件處理⑩文件描述⑩普通文件信息和方法long
lastModified();//得到文件最近一次修改的時(shí)間long
length();//得到文件的長(zhǎng)度,以字節(jié)為單位boolean
delete();//刪除當(dāng)前文件⑩目錄操作boolean
mkdir();//根據(jù)當(dāng)前對(duì)象生成一個(gè)由該對(duì)象指定的路徑
String
list();//列出當(dāng)前目錄下的文件《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》一
、如果某文件如E:\doc\測(cè)試文件.txt存在,則刪除該文
件,如果不存在則創(chuàng)建,并顯示該文件的相關(guān)信息(文件
名,絕對(duì)路徑,讀寫(xiě)權(quán)限)《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文
概
術(shù)
Java
程序
原
中,對(duì)于數(shù)的輸入/輸出操作以注意:輸入/輸出處理息Q10
設(shè)計(jì)中北尚重要的一部分“流如從鍵盤(pán)am)
方文件
程序
式
進(jìn)
行
;J2SDK
提供了0010111
…
…..程序網(wǎng)路連接010.
…
010.
…程序
程序“hello”010.
…
程序件流各種各樣的“流”類(lèi),用以獲取不同種類(lèi)的數(shù)
據(jù);程序中通過(guò)標(biāo)準(zhǔn)的
方法輸入或輸出數(shù)據(jù)。《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》文件I/O流概述--流是一個(gè)很形象的概念⑩
圖
示
:AstreamwritesProgramdesta0Sourcea0《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》ProgramreadsAstreamnn《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》左命
入命中云公米●java.io包中定義了多個(gè)流類(lèi)型(類(lèi)或抽象類(lèi))來(lái)實(shí)現(xiàn)輸入/輸出
功能,可以從不同的角度對(duì)其進(jìn)行分類(lèi):口按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流。(以程序的角度來(lái)
考慮)口按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流。口按照功能不同可以分為節(jié)點(diǎn)流和處理流。●J2SDK所提供的所有流類(lèi)型位于包java.io內(nèi)都分別繼承自以下四種抽象流類(lèi)型。字節(jié)流字符流輸入流InputStreamReader輸出流OutputStreamWriter節(jié)點(diǎn)流:為可以從一個(gè)特定的數(shù)據(jù)源(節(jié)點(diǎn))讀寫(xiě)數(shù)據(jù)(如:
文件,內(nèi)存)數(shù)據(jù)源
程序節(jié)點(diǎn)流處理流:是“連接”在已存在的流(節(jié)點(diǎn)流或處理流)之上,
通過(guò)對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫(xiě)功能。數(shù)據(jù)源程序程序數(shù)據(jù)源《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》輸入輸出流分類(lèi)為節(jié)點(diǎn)F11eInputStreamPipedInputStreamFilterInputStreamInputStreamByteArrayInputStreamSequenceInputStreanStringBufferInputS:ream
ObjectInputStream字節(jié)流⑩概念及圖示:從InputStream
和OutputStream
派生出來(lái)的一系列類(lèi)。這類(lèi)流以字節(jié)(byte
:8
bit)為基本處理單位。下圖中深色LineNumberInputstreamDataInput5tredmBufferedInputStreanPushbackInputStrean《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》File0utputStreamPipedoutputStreamFilterOutputStreamByteArrayOutputStreamObjectOutputStream字節(jié)流◆概念及圖示(續(xù)):DataOutputStreamBufferedoutputStreamPrintStream《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》OutputStream字節(jié)流--InputStream和OutputStream⑩InputStream
和OutputStream⑩InputStream⑩從流中讀取數(shù)據(jù):read();//讀取一個(gè)字節(jié),返回值為所讀的字節(jié)int
read(byte
b[]);//讀取多個(gè)字節(jié),放置到字節(jié)數(shù)組b中,通常讀取的字節(jié)數(shù)量為b的長(zhǎng)度,返回值為實(shí)際讀取的字節(jié)的數(shù)量intavailable();//返回值為流中尚未讀取的字節(jié)的數(shù)量⑩關(guān)閉流:close();//流操作完畢后必須關(guān)閉《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字節(jié)流--InputStream和OutputStream⑩InputStream
和OutputStream⑩OutputStream⑩輸出數(shù)據(jù):void
write(int
b);
//往流中寫(xiě)一個(gè)字節(jié)bvoid
write(byte
b[]);//往流中寫(xiě)一個(gè)字節(jié)數(shù)組bvoid
write(byte
b[],int
off,int
len);//把字節(jié)數(shù)組b
中從下標(biāo)off開(kāi)始,長(zhǎng)度為len
的
字節(jié)寫(xiě)入流中⑩flush()//
刷空輸出流,并輸出所有被緩存的字節(jié)由于某些流支持緩存功能,該方法將把緩存中所有內(nèi)容強(qiáng)制輸出到流中。⑩關(guān)閉流:close();//流操作完畢后必須關(guān)閉《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字節(jié)流⑩I/O中的異常進(jìn)行I/O操作時(shí)可能會(huì)產(chǎn)生I/O異常,屬于非運(yùn)行時(shí)異常,應(yīng)該在程序中處理。如:
FileNotFoundException,EOFException,
IOException字節(jié)流--FilelnputSteam
和FileOutputSteam⑩FilelnputStream和FileOutputStream⑩用來(lái)進(jìn)行文件I/O處理,由它們所提供的方法可以打開(kāi)本地主機(jī)上的文件,并進(jìn)
行順序的讀/寫(xiě)。
從鍵盤(pán)接收一行數(shù)據(jù),寫(xiě)到一個(gè)文件中從一個(gè)文件中讀出,然后寫(xiě)入另一個(gè)文件?!禞ava面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字節(jié)流—BufferedInputStream
和BufferedOutputStre
am⑩BufferedlnputStream和BufferedOutputStream緩沖流⑩用于提高輸入/輸出處理的效率。
利用緩沖流從一個(gè)文件中讀出,然后寫(xiě)入另一個(gè)文件?!禞ava面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》
字
節(jié)流DataInputStream和DataOutputStream⑩DatalnputStream
和
DataOutputStream⑩不僅能讀/寫(xiě)數(shù)據(jù)流,而且能讀/寫(xiě)各種的java語(yǔ)言的基本類(lèi)型,
如
:boolean,int,float等
。
應(yīng)用DatalnputStream
和DataOutputStream,編寫(xiě)一
個(gè)boolean,
int型的數(shù)據(jù),寫(xiě)入文件《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》
字節(jié)流—PrintStream⑩PrintStream在整個(gè)
IO
包中,打印流是輸出信息最方便的類(lèi),主要包
含字節(jié)打印流(PrintStream)和字符打印流(PrintWriter).打印流
提供了非常方便的打印功能,可以打印任何的數(shù)據(jù)類(lèi)型,例如:小數(shù)、整數(shù)、字符串等等。System.out和System.err都是java.io.PrintStream類(lèi)的實(shí)例。PrintStream不限于控制臺(tái)打印。PrintStream是一個(gè)處理流,可以連
接在任何其他流上。《Java
面
向
對(duì)
象
程
序
設(shè)
計(jì)
案
例
教
程
》字節(jié)流—PrintStream1、通過(guò)打印流向文件中寫(xiě)信息。2、從鍵盤(pán)上接收信息,然后在控制臺(tái)上輸出。BufferedReaderCharArrayReaderInputStreamReaderReaderFilterRedderPipedReaderStringReader字符流⑩概述:從Reader
和Writer派生出的一系列類(lèi),這類(lèi)流以16位的Unicode碼表示的字符為基本處理單位。《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》FileReaderPushbackRedderLineNumberReaderOuputStreamReaderWriterFilterwriterPipedwriterStringwriterFilterwriter《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》BufferedwriterCharArraywriter字符流Filewriter字符流⑩
java中提供了處理以16位的Unicode
碼表示的字符流的類(lèi),即以Reader和Writer
為基類(lèi)派生出的一系列類(lèi)。⑩
Reader
類(lèi)是處理所有字符流輸入類(lèi)的父類(lèi)。⑩
Writer
類(lèi)是處理所有字符流輸出類(lèi)的父類(lèi)。這兩個(gè)類(lèi)是抽象類(lèi),只是提供了一系列用于字符流處理的接口,
不能生成這兩個(gè)類(lèi)的實(shí)例,只能通過(guò)使用由它們派生出來(lái)的子類(lèi)
對(duì)象來(lái)處理字符流?!禞ava
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流⑩Reader類(lèi)是處理所有字符流輸入類(lèi)的父類(lèi)。⑩讀取字符⑩publicintread()throws
IOException;//讀取一個(gè)字符,返回值為讀取的字符⑩public
int
read(char
cbuf[)throws
IOException;/*讀取一系列字符到數(shù)組cbuf[]中,
返回值為實(shí)際讀取的字符的數(shù)量*/⑩publicabstract
int
read(charcbuf[],intoff,intlen)throws
IOException;/*讀取len個(gè)字符,從數(shù)組cbufl的下標(biāo)off處開(kāi)始存放,返回值為
實(shí)際讀取的字符數(shù)量,該方法必須由子類(lèi)實(shí)現(xiàn)*/《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流⑩Reader類(lèi)是處理所有字符流輸入類(lèi)的父類(lèi)。
⑩關(guān)閉流⑩public
abstract
void
close()throwsIOException;字符流⑩Writer類(lèi)是處理所有字符流輸出類(lèi)的父類(lèi)。⑩向輸出流寫(xiě)入字符⑩
publicvoidwrite(int
c)throwsIOException;
//將整型值c的低16位寫(xiě)入輸出流。⑩public
void
write(char
cbuf[)throws
IOException;
//將字符數(shù)組cbuf[]寫(xiě)入輸出流⑩public
abstract
void
write(char
cbuf[],int
off,int
len)throwsIOException;/*將字符數(shù)組cbuf[中的從索引為off的位置處開(kāi)始的len個(gè)字符寫(xiě)
入輸出流*/《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流⑩Writer類(lèi)是處理所有字符流輸出類(lèi)的父類(lèi)。⑩向輸出流寫(xiě)入字符⑩
public
void
write(Stringstr)throws
IOException;//將字符串str中的字符寫(xiě)入輸出
流⑩
public
void
write(String
str,int
off,int
len)throwsIOException;//將字符串str
中從索引off
開(kāi)始處的len個(gè)字符寫(xiě)入輸出流⑩flush()//刷空輸出流,并輸出所有被緩存的字符?!禞ava面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流⑩Writer類(lèi)是處理所有字符流輸出類(lèi)的父類(lèi)。⑩向輸出流寫(xiě)入字符⑩
public
void
write(Stringstr)throws
IOException;//將字符串str中的字符寫(xiě)入輸出
流⑩
public
void
write(String
str,int
off,int
len)throwsIOException;//將字符串str
中從索引off
開(kāi)始處的len個(gè)字符寫(xiě)入輸出流⑩flush()//刷空輸出流,并輸出所有被緩存的字符?!禞ava面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流--FileReader
和FileWriter1、文件的復(fù)制2、從鍵盤(pán)接收一行數(shù)據(jù),寫(xiě)到一個(gè)文件中《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流--BufferedReader和BufferedWriter⑩BufferedReader
和BufferedWriter⑩生成流對(duì)象⑩public
BufferedReader(Readerin);
//使用缺省的緩沖區(qū)大小⑩public
BufferedReader(Readerin,intsz);
//sz為緩沖區(qū)的大?、鈖ublic
BufferedWriter(Writerout);⑩public
BufferedWriter(Writerout,intsz);《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流--BufferedReader和BufferedWriter⑩BufferedReader
和BufferedWriterBufferedReader是從字符輸入流中讀取文本,緩沖各個(gè)字符,提
高了字符、數(shù)組和行的高效讀取。⑩讀入/寫(xiě)出字符⑩除了Reader
和Writer中提供的基本的讀寫(xiě)方法外,增加對(duì)整行字符的處理。⑩publicStringreadLine()throwsIOException;//讀一行字符⑩publicvoidnewLine()throwsIOException;//寫(xiě)一行字符《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》字符流--BufferedReader和BufferedWriter1
、
文件的讀取(按行讀取)文件內(nèi)容“你好嗎”,
好””你呢”,“我也很好”(使用BufferedReader/BufferedWriter)《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》對(duì)象流⑩ObjectOutputStream/ObjectlnputStream⑩ObjectlnputStream
對(duì)以前使用
ObjectOutputStream
寫(xiě)入的基本
數(shù)據(jù)和對(duì)象進(jìn)行反序列化。⑩ObjectOutputStream
和
ObjectlnputStream分別與FileOutputStream
和FilelnputStream
一
起使用時(shí),可以為應(yīng)用程
序提供對(duì)對(duì)象圖形的持久性存儲(chǔ)。《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》對(duì)象的序列化(Serialization)⑩序列化的定義⑩什么是序列化對(duì)象的壽命通常隨著生成該對(duì)象的程序的終止而終止。有時(shí)候,可能需要將對(duì)象的狀態(tài)保存下來(lái),在需要時(shí)再將對(duì)象恢復(fù)。我們把對(duì)象的這種能記錄自己的狀態(tài)以便將來(lái)再生的能力,叫做對(duì)象
的持續(xù)性(persistence)
。對(duì)象通過(guò)寫(xiě)出描述自己狀態(tài)的數(shù)值來(lái)記錄自己,這個(gè)過(guò)程叫對(duì)象的序列化(Serialization)。《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》對(duì)象的序列化(Serialization)⑩序列化的定義⑩序列化的目的序列化的目的是為java的運(yùn)行環(huán)境提供一組特性,其主要任務(wù)是
寫(xiě)出對(duì)象實(shí)例變量的數(shù)值?!禞ava面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》《Java
面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》對(duì)象的序列化(Serialization)⑩序列化方法⑩在java.io包中,接口Serializable用來(lái)作為實(shí)現(xiàn)對(duì)象串行化的工具,
只有實(shí)現(xiàn)了Serializable的類(lèi)的對(duì)象才可以被串行化。⑩定義一個(gè)可序列化對(duì)象對(duì)象的序列化(Serialization)publicclassStudentimplements
Serializable{int
id;//學(xué)號(hào)String
name;//姓名intage;//年齡Stringdepartment//系別publicStudent(intid,Stringname,intage,String
department){
this.id
=id;
=name;this.age
=age;this.department=department;《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程》對(duì)象的序列化(Serialization)⑩構(gòu)造對(duì)象的輸入/輸出流要序列化一個(gè)對(duì)象,必須與一定的對(duì)象輸入/輸出流聯(lián)系起來(lái),通過(guò)
對(duì)象輸出流將對(duì)象狀態(tài)保存下來(lái),再通過(guò)對(duì)象輸入流
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跆拳道品勢(shì)培訓(xùn)課件
- 初級(jí)社會(huì)工作者《社會(huì)工作綜合能力》試題附答案
- 《市場(chǎng)營(yíng)銷(xiāo)環(huán)》-“促銷(xiāo)概述”項(xiàng)目任務(wù)書(shū) 2
- 2026年稅務(wù)籌劃財(cái)務(wù)規(guī)劃合同協(xié)議書(shū)
- 足療學(xué)員手法培訓(xùn)課件
- 醫(yī)院感染試題及答案
- 新高考語(yǔ)文一輪復(fù)習(xí)考點(diǎn)鞏固卷23 內(nèi)容與情感(原卷版)
- 國(guó)考心理測(cè)試題目及答案
- 泰安消防心理測(cè)試題及答案
- 2026管理學(xué)理論公務(wù)員面試題及答案
- 課例研究報(bào)告
- 建筑工程各部門(mén)職能及各崗位職責(zé)201702
- 五年級(jí)上冊(cè)道德與法治期末測(cè)試卷推薦
- 重點(diǎn)傳染病診斷標(biāo)準(zhǔn)培訓(xùn)診斷標(biāo)準(zhǔn)
- GB/T 3934-2003普通螺紋量規(guī)技術(shù)條件
- 蘭渝鐵路指導(dǎo)性施工組織設(shè)計(jì)
- CJJ82-2019-園林綠化工程施工及驗(yàn)收規(guī)范
- 小學(xué)三年級(jí)閱讀練習(xí)題《鴨兒餃子鋪》原文及答案
- 六宮格數(shù)獨(dú)100題
- 杭州電子招投標(biāo)系統(tǒng)使用辦法
- 車(chē)輛贈(zèng)與協(xié)議模板
評(píng)論
0/150
提交評(píng)論