Java對文件進(jìn)行基本操作案例講解_第1頁
Java對文件進(jìn)行基本操作案例講解_第2頁
Java對文件進(jìn)行基本操作案例講解_第3頁
Java對文件進(jìn)行基本操作案例講解_第4頁
Java對文件進(jìn)行基本操作案例講解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第Java對文件進(jìn)行基本操作案例講解Filedirectory=newFile("D:/temp");

booleandirectoryDoesNotExists=!directory.exists();

if(directoryDoesNotExists){

//mkdir是創(chuàng)建單級目錄

//mkdirs是連續(xù)創(chuàng)建多級目錄

directory.mkdirs();

//創(chuàng)建文件

Filefile=newFile("D:/temp/test.txt");

booleanfileDoesNotExsits=!file.exists();

if(fileDoesNotExsits){

try{

file.createNewFile();

}catch(IOExceptione){

e.printStackTrace();

//遍歷directory下的所有文件消息

File[]files=directory.listFiles();

for(Filefile1:files){

System.out.println(file1.getPath());

運(yùn)行結(jié)果:

D:\temp\test.txt

JavaNIO

Java7提出的NIO包,提出新的文件系統(tǒng)類Path,Files,DirectoryStream,FileVisitor,FileSystem是對java.io.File的有益補(bǔ)充文件復(fù)制和移動文件相對路徑遞歸遍歷目錄遞歸刪除目錄

Path類

publicstaticvoidmain(String[]args){

//Path和java.io.File基本類似

Pathpath=FileSystems.getDefault().getPath("D:/temp","abc.txt");

//D:/返回1D:/temp返回2

System.out.println(path.getNameCount());

//用File的toPath()方法獲取Path對象

Filefile=newFile("D:/temp/abc.txt");

Pathpath1=file.toPath();

System.out.println(pareTo(path1));//結(jié)果為0說明兩個path相等

//獲取Path方法三

Pathpath3=Paths.get("D:/temp","abc.txt");

//判斷文件是否可讀

System.out.println("文件是否可以讀取:"+Files.isReadable(path));

Files類

publicstaticvoidmain(String[]args){

//移動文件

moveFile();

//訪問文件屬性

fileAttributes();

//創(chuàng)建目錄

createDirectory();

privatestaticvoidcreateDirectory(){

Pathpath=Paths.get("D:/temp/test");

try{

//創(chuàng)建文件夾

if(Files.notExists(path)){

Files.createDirectory(path);

}else{

System.out.println("文件夾創(chuàng)建失敗");

Pathpath2=path.resolve("a.java");

Pathpath3=path.resolve("b.java");

Pathpath4=path.resolve("c.txt");

Pathpath5=path.resolve("d.jpg");

Files.createFile(path2);

Files.createFile(path3);

Files.createFile(path4);

Files.createFile(path5);

//不帶條件的遍歷輸出

DirectoryStreamPathlistDirectory=Files.newDirectoryStream(path);

for(Pathpath1:listDirectory){

System.out.println(path1.getFileName());

//創(chuàng)建一個帶有過濾器,過濾文件名以javatxt結(jié)尾的文件

DirectoryStreamPathpathsFilter=Files.newDirectoryStream(path,"*.{java,txt}");

for(Pathitem:pathsFilter){

System.out.println(item.getFileName());

}catch(Exceptione){

e.printStackTrace();

@SuppressWarnings("all")

privatestaticvoidfileAttributes(){

Pathpath=Paths.get("D:/temp");

//判斷是否是目錄

System.out.println(Files.isDirectory(path,LinkOption.NOFOLLOW_LINKS));

try{

//獲取文件的基礎(chǔ)屬性

BasicFileAttributesattributes=Files.readAttributes(path,BasicFileAttributes.class);

//判斷是否是目錄

System.out.println(attributes.isDirectory());

//獲取文件最后修改時間

System.out.println(newDate(attributes.lastModifiedTime().toMillis()).toLocaleString());

}catch(Exceptione){

e.printStackTrace();

privatestaticvoidmoveFile(){

Pathfrom=Paths.get("D:/temp","text.txt");

//將文件移動到D:/temp/test/text.txt,如果目標(biāo)文件以存在則替換

Pathto=from.getParent().resolve("test/text.txt");

try{

//文件大小bytes

System.out.println(Files.size(from));

//調(diào)用文件移動方法,如果目標(biāo)文件已存在則替換

Files.move(from,to,StandardCopyOption.REPLACE_EXISTING);

}catch(Exceptione){

e.printStackTrace();

遞歸遍歷查找指定文件

publicclassDemo2{

publicstaticvoidmain(String[]args){

//查找以.jpg結(jié)尾的

Stringext="*.jpg";

PathfileTree=Paths.get("D:/temp/");

Searchsearch=newSearch(ext);

EnumSetFileVisitOptionoptions=EnumSet.of(FileVisitOption.FOLLOW_LINKS);

try{

Files.walkFileTree(fileTree,options,Integer.MAX_VALUE,search);

}catch(IOExceptione){

e.printStackTrace();

classSearchimplementsFileVisitor{

privatePathMatchermatcher;

publicSearch(Stringext){

this.matcher=FileSystems.getDefault().getPathMatcher("glob:"+ext);

publicvoidjudgeFile(Pathfile)throwsIOException{

Pathname=file.getFileName();

if(name!=nullmatcher.matches(name)){

//文件名匹配

System.out.println("匹配的文件名:"+name);

//訪問目錄前調(diào)用

@Override

publicFileVisitResultpreVisitDirectory(Objectdir,BasicFileAttributesattrs)throwsIOException{

returnFileVisitResult.CONTINUE;

//訪問文件時調(diào)用

@Override

publicFileVisitResultvisitFile(Objectfile,BasicFileAttributesattrs)throwsIOException{

judgeFile((Path)file);

returnFileVisitResult.CONTINUE;

//訪問文件失敗后調(diào)用

@Override

publicFileVisitResultvisitFileFailed(Objectfile,IOExceptionexc)throwsIOException{

returnFileVisitResult.CONTINUE;

//訪問一個目錄后調(diào)用

@Override

publicFileVisitResultpostVisitDirectory(Objectdir,IOExceptionexc)throwsIOException{

System.out.println("postVisit:"+(Path)dir);

returnFileVisitResult.CONTINUE;

運(yùn)行結(jié)果:

匹配的文件名:d.jpg

postVisit:D:\temp\test

postVisit:D:\temp

Java的IO包

Java讀寫文件,只能以數(shù)據(jù)流的形式進(jìn)行讀寫java.io包中節(jié)點類:直接對文件進(jìn)行讀寫包裝類:1、轉(zhuǎn)換類:字節(jié)/字符/數(shù)據(jù)類型的轉(zhuǎn)化類。2、裝飾類:裝飾節(jié)點類。

節(jié)點類

直接操作文件類InputStream,OutStream(字節(jié))FileInputStream,FileOutputStreamReader,Writer(字符)FileReader,FileWriter

轉(zhuǎn)換類

從字符到字節(jié)之間的轉(zhuǎn)化InputStreamReader:文件讀取時字節(jié),轉(zhuǎn)化為Java能理解的字符OutputStreamWriter:Java將字符轉(zhuǎn)化為字節(jié)輸入到文件中

裝飾類

DataInputStream,DataOutputStream:封裝數(shù)據(jù)流BufferedInputStream,BufferOutputStream:緩存字節(jié)流BufferedReader,BufferedWriter:緩存字符流

文本文件的讀寫

寫操作

publicstaticvoidmain(String[]args){

writeFile();

publicstaticvoidwriteFile(){

try(BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("D:/temp/demo3.txt")))){

bw.write("helloworld");

bw.newLine();

bw.write("JavaHome");

bw.newLine();

}catch(Exceptione){

e.printStackTrace();

Demo3.txt文件內(nèi)容

helloworld

JavaHome

讀操作

publicstaticvoidmain(String[]args){

readerFile();

privatestaticvoidreaderFile(){

Stringline="";

try(BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream("D:/temp/demo3.txt")))){

while((line=br.readLine())!=null){

System.out.println(line);

}catch(Exceptione){

e.printStackTrace();

運(yùn)行結(jié)果:

helloworld

JavaHome

二進(jìn)制文件讀寫java

publicstaticvoidmain(String[]args){

writeFile();

privatestaticvoidwriteFile(){

try(DataOutputStreamdos=newDataOutputStream(newBufferedOutputStream(newFileOutputStream("D:/temp/test.dat")))){

dos.writeUTF("hello");

dos.writeUTF("helloworldistestbytes");

dos.writeInt(20);

dos.writeUTF("world");

}catch(Exceptione){

e.printStackTrace();

文件內(nèi)容

hellohelloworldistestbytesworld

讀操作

publicstaticvoidmain(String[]args){

readFile();

privatestaticvoidreadFile(){

try(DataInputStreamin=newDataInputStream(newBufferedInputStream(newFileInputStream("D:/temp/test.dat")))){

System.out.println(in.readUTF()+in.readUTF()+in.readInt()+in.readUTF());

}catch(Exceptione){

e.printStackTrace();

運(yùn)行結(jié)果:

hellohelloworldistestbytes20world

ZIP文件的讀寫

zip文件操作類:java.util.zip包中

java.io.InputStream,java.io.OutputStream的子類

ZipInputStream,ZipOutputStream壓縮文件輸入/輸出流

ZipEntry壓縮項

多個文件壓縮

//多個文件壓縮

publicstaticvoidmain(String[]args){

zipFile();

publicstaticvoidzipFile(){

Filefile

溫馨提示

  • 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

提交評論