版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年糖尿病患者的個體化溝通方案
- 油制氫裝置操作工風(fēng)險識別評優(yōu)考核試卷含答案
- 變壓器試驗工操作評估測試考核試卷含答案
- 高壓試驗工崗前決策判斷考核試卷含答案
- 膠印版材生產(chǎn)工崗前技術(shù)改進(jìn)考核試卷含答案
- 脂肪醇胺化操作工發(fā)展趨勢競賽考核試卷含答案
- 棉花加工工崗前核心管理考核試卷含答案
- 玩具設(shè)計師崗前安全綜合考核試卷含答案
- 石作文物修復(fù)師創(chuàng)新思維能力考核試卷含答案
- 老年神經(jīng)外科手術(shù)麻醉風(fēng)險評估工具
- 四川省攀枝花市2025-2026學(xué)年八年級上學(xué)期期末數(shù)學(xué)檢測(含答案)
- 2026年吉林大學(xué)附屬中學(xué)公開招聘教師備考題庫(4人)及參考答案詳解
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫參考答案詳解
- 2025年大學(xué)旅游管理(旅游服務(wù)質(zhì)量管理)試題及答案
- 打捆機(jī)培訓(xùn)課件
- 穿越機(jī)組裝教學(xué)課件
- GB/T 26332.3-2015光學(xué)和光子學(xué)光學(xué)薄膜第3部分:環(huán)境適應(yīng)性
- GB/T 17626.4-2008電磁兼容試驗和測量技術(shù)電快速瞬變脈沖群抗擾度試驗
- GB/T 15153.1-1998遠(yuǎn)動設(shè)備及系統(tǒng)第2部分:工作條件第1篇電源和電磁兼容性
- GB 22021-2008國家大地測量基本技術(shù)規(guī)定
- GA/T 1193-2014人身損害誤工期、護(hù)理期、營養(yǎng)期評定規(guī)范
評論
0/150
提交評論