javaFile文件操作和文件流的詳解(福哥出品)_第1頁
javaFile文件操作和文件流的詳解(福哥出品)_第2頁
javaFile文件操作和文件流的詳解(福哥出品)_第3頁
javaFile文件操作和文件流的詳解(福哥出品)_第4頁
javaFile文件操作和文件流的詳解(福哥出品)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一. 創(chuàng)建文件 (1)最常用的(獲得一個(gè)固定路徑下的文件對象) File parentFile = new File(“D:My Documents.”);/參數(shù)是一個(gè)路徑的字符串。 (2)在父目錄創(chuàng)建一個(gè)名為child的文件對象,child 為文件對象的名字 File chileFile= new File(“D:My Documents.”,String child); 或 File chileFile= new File(parentFile,String child);二,常見文件夾屬性和方法 (1)createNewFile(); 該方法的作用是創(chuàng)建指定的文件。該方法只能用于創(chuàng)建文件

2、,不能用于創(chuàng)建文 件夾,且文件路徑中包含的文件夾必須存在 File file=new (D:My Documenttext.txt); file.createNewFile(); 這樣就會在D盤下的My Document 創(chuàng)建text.txt的記事本(注意:首先得保 證D盤下有My Documen這個(gè)文件夾) (2)mkdir(); 根據(jù)File對象的名字(路徑)創(chuàng)建一個(gè)目錄(文件夾),如果是相對目錄,則新建的目 錄在當(dāng)前目錄下 (3)mkdirs(); 如果File對象名字有多級目錄,則可以調(diào)用該方法一次性創(chuàng)建多級目錄。 (4)exists(); 判斷File對象指向的文件是否存在,返回一個(gè)

3、boolean類型 (5)isDirectory(); 判斷File對象指向的文件是否為目錄,返回一個(gè)boolean類型的值,true或者false。 (6)getName();獲得文件名稱(不帶路徑) (7)length(); 得到File對象指向文件的長度,以字節(jié)計(jì)算,返回一個(gè)長整形的值(long);注意:在 系統(tǒng)中,文件夾(目錄)的大小為零,也就是不占用空間,使用length()時(shí)返回的是0 (8)delete(); 刪除File對象所指定的文件 (9)isFile(); 判斷File對象指向的文件是不是標(biāo)準(zhǔn)文件(就像圖片,音樂文件等) 三,文件的屬性和方法 1.File.separat

4、or 當(dāng)前操作系統(tǒng)的名稱分隔符,等于字符串“”. 2.File.pathSeparator當(dāng)前操作系統(tǒng)的路徑分隔符,等于字符串“;”. 3. File file=new (D:My Documenttext.txt); file.canExecute();測試應(yīng)用程序是否可以執(zhí)行該文件; 4.File file=new (D:My Documenttext.txt); file.canRead();測試用用程序是否可以讀取該文件 5.file.canWrite(); 測試用程序是否可以修改文件 6.file.exists(); 測試此抽象路徑名表示的文件或目錄是否存在 pareTo(file1

5、); 按字母順序比較兩個(gè)抽象路徑。 8.file.getAbsolutePath() 返回此抽象路徑名的絕對路徑名字字符串。 9.file.getCanonicalPath(); 返回此抽象路徑名的規(guī)范路徑名字符串。 10.file.getName(); 返回抽象路徑名表示的文件和目錄名稱。 11.file.getParent(); 返回抽象路徑父目錄的名字。如果此路徑名沒有指定父目錄名字則返回 null。 12.free = file.getUsableSpace(); 返回此抽象路徑名指定的分區(qū)上可用于此虛擬機(jī)的字節(jié)數(shù) 13 . = file.hashCode() ; 計(jì)算此抽象路徑名的哈

6、希碼 14 . = file.isAbsolute(); 測試此抽象路徑名是否為絕對路徑名 15.ong length = file.length() 返回由此抽象路徑名表示的文件的長度 16.String array = file2.list(); 返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄 17. File array1 = file2.listFiles() 返回一個(gè)抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件 18.File roots = File.listRoots(); 列出可用的文件系統(tǒng)根,靜態(tài)方法比如C:/,D:/ 19.file.

7、setReadOnly() 設(shè)置文件只讀; 20.files.setWritable(true) 設(shè)置文件可寫; 三讀取文件 FileReader fr=new FileReader(參數(shù)) BufferedReader br = new BufferedReader(fr); String a=br.readLine(); while(a!=null) 操作 br.close();fr.close(); 四.寫入文件 / 將數(shù)據(jù)寫入文件FileWriter fw = new FileWriter(%1);fw.write(%2);fw.close(); 五 雜項(xiàng)1,提取擴(kuò)展名String %

8、2=(new File(%1).getName().split(.)1;2,提取文件名String %2=(new File(%1).getName().split(/)1;3. 提取文件路徑String %2=(new File(%1).getPath();4. 替換擴(kuò)展名File replaceExt=new File(%1);replaceExt.renameTo(replaceExt.getName().split(.)0+.+%2);例子1.枚舉一個(gè)文件夾中的所有文件夾 /import java.io.*;/import java.util.*;ArrayList folderLis

9、t = new ArrayList();folderList.add(%1);for (int j = 0; j folderList.size(); j+) File file = new File(folderList.get(j);File files = file.listFiles();ArrayList fileList = new ArrayList();for (int i = 0; i files.length; i+) if (filesi.isDirectory() folderList.add(filesi.getPath(); else fileList.add(fi

10、lesi);for (File f : fileList) %2=f.toString();%3例子2復(fù)制文件 int bytesum = 0; int byteread = 0; File oldfile = new File(%1); try if (oldfile.exists() /文件存在時(shí) InputStream inStream = new FileInputStream(oldfile); /讀入原文件 FileOutputStream fs = new FileOutputStream(new File(%2,oldfile.getName(); byte buffer =

11、new byte5120; int length; while ( (byteread = inStream.read(buffer) != -1) bytesum += byteread; /字節(jié)數(shù) 文件大小 System.out.println(bytesum); fs.write(buffer, 0, byteread); inStream.close(); catch (Exception e) System.out.println(復(fù)制單個(gè)文件操作出錯(cuò)); e.printStackTrace(); 六,數(shù)據(jù)流的詳細(xì)介紹 1, 在java中stream代表一種數(shù)據(jù)流(源),javaio

12、的底層數(shù)據(jù)元,(想像成水龍頭)2,任何能夠產(chǎn)生流和數(shù)據(jù)源的javaio對象都看成inputStream對象,它既然可以產(chǎn)生流,我們就可用read()的封裝方法來進(jìn)行(將數(shù)據(jù)從水龍頭進(jìn)行讀取數(shù)據(jù))3任何能夠接受數(shù)據(jù)(源)流的對象javaio的叫做outputStream,他能就收流的數(shù)據(jù),我們調(diào)用write方法來進(jìn)行數(shù)據(jù)收集4我們可以在inputStream和outputstram的基礎(chǔ)上,從實(shí)際出發(fā)從新封裝不同屬性的輸入輸出數(shù)據(jù)流,javaio提供了很多豐富的輸入輸出對象七,字節(jié)流和字符流的區(qū)別(字節(jié):是一種計(jì)量單位,字符:常使用漢字和符號一個(gè)字符等于兩個(gè)字節(jié)) 1以Stream結(jié)尾的都是字節(jié)

13、流,都已reader 和writer結(jié)尾的都是字符流,兩者的區(qū)別就是一個(gè)在讀寫的時(shí)候按照字符,一個(gè)是按照字節(jié) 2在讀寫的過程當(dāng)中要對內(nèi)容安行進(jìn)行處理,比如特定行字符或者是一行數(shù)據(jù)時(shí)一般會選擇字符流3如果對內(nèi)容沒有要求 一般選擇字節(jié)流八,字符流的介紹基于Stream的字節(jié)流DataInputStream-DataOutputStreamFileInputStream-FileOutputStream基于Stream的字符流FileWriter-FileReaderStringWriter-StringReaderInputStream:是一個(gè)出水龍頭(把水封裝在里頭)的一個(gè)實(shí)物對象,該對象的re

14、ad方法呢,就想成這個(gè)出水龍頭這一機(jī)制對象的開關(guān)鈕,你read或openStream(其他對象包容InputStream對象的對象方法)一下呢,就等于打開了出水龍頭的按鈕,水就出來了,里頭封裝的水是什么性質(zhì)的呢,你就用相應(yīng)的容器來裝,如string或byte.OutputStream:你就在InputStream基礎(chǔ)上反著想就ok了OutputStream流1,fo為流變量 fo.write(int b)/往流當(dāng)中寫入一個(gè)字符 fo.write(byte b)往流當(dāng)中寫乳一個(gè)字符數(shù)組 fo.write(byte b,int begin,int len) 寫入數(shù)組b從下標(biāo)begin開始,長度為l

15、en的字節(jié)流2.fo.flush()刷空數(shù)據(jù)流,并輸出所有被緩存的字節(jié),由于某些流支持緩存的功能,該方法吧緩存中所有的字節(jié)強(qiáng)制輸出到流中3,fo.close()流操作完必須關(guān)閉流(比如在讀文件的時(shí)候流不關(guān)閉,之后不能對文件進(jìn)行刪除操作)InputStream 流1,ip為輸出流對象 Ip.read(); 讀取一個(gè)字節(jié),返回的是一個(gè)字節(jié) Ip.read(byte b)讀取一個(gè)字節(jié)數(shù)組,返回一個(gè)字節(jié)數(shù)組串Ip.read(byte b,int bengin,int len) 讀取len個(gè)字節(jié) 從下標(biāo)為begin開始 2,ip.available() 返回字節(jié)流中尚未讀取的字節(jié)數(shù)量3,ip.mark(

16、int readlimit)記錄當(dāng)前指針?biāo)诘奈恢胷eadlimit指指針讀取的第readlimit個(gè)字節(jié)后Ip.reset()把讀的指針重新指向mark方法記錄的位置字節(jié)流:處理字節(jié)的輸入和輸出。包括讀寫二進(jìn)制數(shù)據(jù)等方面的內(nèi)容。字符流:處理字符的輸入和輸出。他采用的是Unicode編碼,可以實(shí)現(xiàn)國際化。使用字符流的另外一個(gè)好處就是:字符流比字節(jié)流更有效率。字節(jié)流類功能簡單介紹DataInputStream包含了讀取Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸入流DataOutputStream包含了寫Java標(biāo)準(zhǔn)數(shù)據(jù)類型的輸出流ByteArrayInputStream從字節(jié)數(shù)組讀取的輸入流ByteArrayOu

17、tputStream寫入字節(jié)數(shù)組的輸出流FileInputStream從文件讀入的輸入流FileOutputStream寫入文件的輸出流PrintStream包含最常見的Print()和Println()的輸出流PushbackInputStream返回一個(gè)字節(jié)到輸入流,主要用于編譯器的實(shí)現(xiàn)PipedInputStream輸出管道PipedOutputStream輸入管道SequenceInputStream將n個(gè)輸入流聯(lián)合起來,一個(gè)接一個(gè)按一定順序讀取RandomAccessFile隨機(jī)訪問文件BufferInputStream緩沖輸入流BufferOutputStream緩沖輸出流Filt

18、erInputStream實(shí)現(xiàn)了InputStream InterfaceFilterOutputStream實(shí)現(xiàn)了OutputStream InterfaceInputStream抽象類,描述流的輸入OutputStream抽象類,描述流的輸入 例子3import java.io.File;import java.io.IOException;import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;public class StreamTest pu

19、blic static void main(String args) StreamTest st = new StreamTest();String writeStr = Hello World!rn你好!;String fileName = outFile.txt;st.OutputTest(fileName,writeStr);st.InputTest(fileName);/字節(jié)-讀private void InputTest(String fileName) File f = createFile(fileName);/創(chuàng)建文件對象FileInputStream fis;byte b =

20、 new byte100;/try System.out.println(創(chuàng)建輸入流.);fis = new FileInputStream(f);System.out.println(創(chuàng)建輸入流完成);System.out.println(開始讀取.);fis.read(b);/讀取100個(gè)字節(jié)放在b中,通常讀取的長度為b的長度,返回值為 實(shí)際讀取的字節(jié)長度System.out.println(讀取完成);String str = new String(b);System.out.println(讀取內(nèi)容輸出:n+str);fis.close();/關(guān)閉數(shù)據(jù)流catch(FileNotFoundException e) System.out.println(文件沒有找到);catch(IOException e) System.out.println(讀取失敗);/字節(jié)-寫private void OutputTest(String fileName,String text) File f

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論