16隨機(jī)文件教學(xué)課件_第1頁(yè)
16隨機(jī)文件教學(xué)課件_第2頁(yè)
16隨機(jī)文件教學(xué)課件_第3頁(yè)
16隨機(jī)文件教學(xué)課件_第4頁(yè)
16隨機(jī)文件教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、文件與隨機(jī)文件,2,文件與隨機(jī)文件,文件及其操作 隨機(jī)文件及其操作 對(duì)象序列化,3,文件類(lèi)File,Java.io.File 文件類(lèi)提供獲取文件基本信息、以及對(duì)文件進(jìn)行各種操作的方法。 Java將目錄也看作文件。 創(chuàng)建File對(duì)象: public File(String pathname) public File(String parent, String child) public File(File parent, String child) 如: File myFile1=new File(“mytext.txt”); File myFile2 = new File(“c:”,”myfl

2、oder”); File myFile3 = new File(myFile2, “mytext.txt”);,4,File類(lèi)的常用方法,與文件名相關(guān)的方法 String getName( ) String getPath( ) boolean renameTo(File newName) 文件屬性測(cè)試方法 boolean exists( ) boolean canWrite( ) boolean canRead( ) boolean isFile( ) boolean isDirectory( ),5,File類(lèi)的常用方法,創(chuàng)建新文件 boolean createNewFile ( ) 刪除

3、文件 boolean delete( ) 目錄操作方法 boolean mkdir( ),6,文件過(guò)濾,文件過(guò)濾就是在調(diào)用File對(duì)象的list()、listFiles()方法時(shí),僅列出符合要求的文件。 Java中提供了FileFilter和FilenameFilter接口,編寫(xiě)實(shí)現(xiàn)這兩個(gè)接口的類(lèi),實(shí)現(xiàn)其中的accept方法,可以獲得文件過(guò)濾器對(duì)象。 在調(diào)用File對(duì)象的list(),listFiles()方法時(shí),以過(guò)濾器對(duì)象為參數(shù),即可實(shí)現(xiàn)文件過(guò)濾。,7,文件的訪(fǎng)問(wèn)方式,順序存取 按照從頭到尾的順序讀出或?qū)懭胛募?shù)據(jù)的方式叫做對(duì)文件的順序存取。Java中通過(guò)I/O流進(jìn)行的文件訪(fǎng)問(wèn)都是順序存取

4、,而且對(duì)一個(gè)文件不能同時(shí)進(jìn)行讀和寫(xiě)。 隨機(jī)存取 不必按照順序,可以在文件的任意位置對(duì)文件進(jìn)行讀寫(xiě)的方式稱(chēng)作對(duì)文件的隨機(jī)存取。,8,隨機(jī)存取文件類(lèi)-RandomAccessFile,構(gòu)造方法 RandomAccessFile(String name, String mode) throws FileNotFoundException RandomAccessFile(File file, String mode) throws FileNotFoundException mode的取值: “r”:只讀 ”rw”:讀寫(xiě),9,RandomAccessFile的常用方法,確定文件指針位置的相關(guān)方法;

5、返回當(dāng)前文件指針位置 long getFilePointer( ) throws IOException 文件指針定位到指定位置 void seek( long pos ) throws IOException 返回文件長(zhǎng)度 long length( ) throws IOException 從當(dāng)前位置開(kāi)始,將文件指針移動(dòng)n個(gè)字節(jié)(n0) int skipBytes(int n) throws IOException,10,RandomAccessFile的常用方法,讀取文件數(shù)據(jù)的方法: 讀一個(gè)字節(jié),指針移動(dòng)一個(gè)字節(jié) int read() throws IOException 讀一個(gè)邏輯值,指

6、針移動(dòng)一個(gè)字節(jié) boolean readBoolean() throws IOException 讀一個(gè)字符,指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 char readChar() throws IOException 讀一個(gè)int數(shù),指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 int readInt() throws IOException 讀一個(gè)long,指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 long readLong() throws IOException 讀一個(gè)float,指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 float readFloat() throws IOException 讀一個(gè)double,指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 doubl

7、e readDouble() throws IOException 讀一行數(shù)據(jù),以字符串的形式返回。指針移到下一行數(shù)據(jù)的開(kāi)始 String readLine() throws IOException /一個(gè)字節(jié)一個(gè)字符 讀入一個(gè)UTF字符串,指針移到下一個(gè)數(shù)據(jù)的開(kāi)始 String readUTF() throws IOException /unicode字符 UTF編碼,11,RandomAccessFile的常用方法,向文件寫(xiě)數(shù)據(jù)的方法: 寫(xiě)一個(gè)字節(jié)(參數(shù)b的低八位) void write(int b) throws IOException 寫(xiě)一個(gè)字節(jié)數(shù)組 void write(byte b

8、) throws IOException 寫(xiě)一個(gè)邏輯值 void writeBoolean(booleanv) throws IOException 寫(xiě)一個(gè)字符 void writeChar(intv) throws IOException 寫(xiě)一個(gè)int數(shù)據(jù) void writeInt(intv) throws IOException 寫(xiě)一個(gè)long數(shù)據(jù) void writeLong(longv) throws IOException 寫(xiě)一個(gè)float數(shù)據(jù) void writeFloat(floatv) throws IOException 寫(xiě)一個(gè)double數(shù)據(jù) void writeDoub

9、le(doublev) throws IOException 寫(xiě)一個(gè)字符串 void writeChars(Strings) throws IOException 以UTF格式寫(xiě)一個(gè)字符串 void writeUTF(Stringstr) throws IOException,12,例:建立隨機(jī)文件,import java.io.*; class TestRandomAccessFile public static void main(String args) throws IOException String sName; int grade; RandomAccessFile myRAFi

10、le = new RandomAccessFile(grade.dat,rw); for(int i=0;i10;i+) sName=student+i; myRAFile.writeUTF(sName); /以UTF格式寫(xiě)字符串 myRAFile.writeInt(i*10); /寫(xiě)整數(shù) System.out.println(the File is +myRAFile.length();,13,續(xù),myRAFile.seek(0); /回到文件頭 for(int i=0;i10;i+) System.out.println(the file pointer is “ + myRAFile.g

11、etFilePointer(); sName=myRAFile.readUTF(); System.out.println(the file pointer is “ + myRAFile.getFilePointer(); grade=myRAFile.readInt(); System.out.println(sName+ +grade); myRAFile.close(); ,14,例:隨機(jī)文件讀取-成績(jī)查詢(xún),import java.io.*; class TestRandomRead public static void main(String args) throws IOExcep

12、tion String sName; int grade; RandomAccessFile myRAFile = new RandomAccessFile(grade.dat,rw); System.out.print(請(qǐng)輸入你要查詢(xún)的學(xué)生編號(hào):); String snum=new BufferedReader(new InputStreamReader(System.in).readLine(); int num=Integer.parseInt(snum.trim(); myRAFile.seek(14*(num-1); sName=myRAFile.readUTF(); /讀入字符串:

13、姓名 grade=myRAFile.readInt(); /讀入整數(shù):成績(jī) System.out.println(sName+的成績(jī)是+grade); myRAFile.close(); ,15,對(duì)象序列化(對(duì)象輸入/輸出流),對(duì)象序列化是指把對(duì)象變成字節(jié)序列以便保存到外存或在網(wǎng)絡(luò)上傳輸。實(shí)現(xiàn)了java.io.Serializable接口的類(lèi)其對(duì)象可以被序列化,并且可以用對(duì)象輸出流ObjectOutputStream輸出,用對(duì)象輸入流ObjectInputStream讀入. 只有對(duì)象的數(shù)據(jù)被保存,方法與構(gòu)造函數(shù)不被保存。,16,輸出對(duì)象,import java.io.*; import jav

14、a.util.Date; public class SerializeDate SerializeDate( ) Date d = new Date( ); /d為可序列化的對(duì)象 try FileOutputStream f = new FileOutputStream(date.ser); ObjectOutputStream s= new ObjectOutputStream(f); s.writeObject(d); /將對(duì)象d寫(xiě)到文件date.ser中 f.close( ); catch( IOException e) e.printStackTrace( ); public static void main(String args) SerializeDate b = new SerializeDate(); ,17,輸入對(duì)象,import java.io.*; import java.util.Date; public class UnSerializeDate UnSerializeDate() Date d = null ; try FileInputStream f = new FileInputStream(date.ser

溫馨提示

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

評(píng)論

0/150

提交評(píng)論