弗罗西诺内对拉齐奥

當前位置:首頁 > 學習資源 > 講師博文 > java file類創建文件

java file類創建文件 時間:2018-02-07      來源:未知

我們的程序經常需要獲取磁盤上文件的相關信息或在磁盤上創建新的文件,這就需要用到File類。需要注意的是:File類的對象主要用來獲得文件本身的信息,而不涉及對文件的讀寫操作。

創建File類對象

創建File類有4個方法

· File(String filename) 通過將給定的路徑名字符串轉換為抽象路徑名來創建新的 File實例。

· File(URI uri) 通過將給定的 file: URI轉換為抽象路徑名來創建新的 File實例。

· File(File parent, String child) 從父抽象路徑名和子路徑名字符串創建新的 File實例。

· File(String parent, String child) 從父路徑名字符串和子路徑名字符串創建新的 File實例。

Java file類

獲取文件的屬性

經常使用File類的下列方法來獲取文件本身的一些信息

· public boolean exists() 判斷文件或目錄是否存在。

· public boolean isFile() 判斷文件是否是一個普通文件,而不是目錄。

· public boolean isDirectory() 判斷文件是否是一個目錄。

· public boolean isHidden() 判斷文件是否是隱藏文件。

· public boolean canRead() 判斷文件是否是可讀的。

· public boolean canWrite() 判斷文件是否是可寫的。

· public String getName() 獲取文件名字。

· public String getAbsolutePath() 獲取文件的絕對路徑。

· public String getParent() 獲取文件的父目錄。

· public long length() 獲取文件長度(單位是字節)。

· public long lastModified() 獲取文件最后的修改時間(單位是毫秒)。

測試類 FileTest.java

準備工作:在桌面上新建一個文件夾dirTest,再在里面新建一個文本文檔,完整路徑為:C:\Users\PRO\Desktop\dirTest\fileTest.txt,里面隨便寫點什么內容。

package com.fs.file;

import java.io.File;

public class FileTest {

public static void main(String[] args) {

// 獲取文件對象,注意使用轉義字符

File file = new File("C:\\Users\\PRO\\Desktop\\dirTest\\fileTest.txt");

// 判斷文件是否存在 true

System.out.println(file.exists());

// 判斷文件是否是一個普通文件 true

System.out.println(file.isFile());

// 判斷文件是否是一個目錄 false

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

// 判斷文件是否可讀 true

System.out.println(file.canRead());

// 判斷文件是否可寫 true

System.out.println(file.canWrite());

// 判斷文件是否隱藏 false

System.out.println(file.isHidden());

// 獲取文件名字 fileTest.txt

System.out.println(file.getName());

// 獲取文件絕對路徑 C:\Users\PRO\Desktop\dirTest\fileTest.txt

System.out.println(file.getAbsolutePath());

// 獲取文件的父目錄 C:\Users\PRO\Desktop\dirTest

System.out.println(file.getParent());

// 獲取文件長度 9971

System.out.println(file.length());

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

System.out.println(file.lastModified());

}

}

目錄

目錄與文件的創建與刪除

· public boolean createNewFile() 創建普通文件。

· public boolean mkdir() 創建目錄。

· public boolean delete() 刪除文件或目錄。

列出目錄中的文件

· public String[] list() 用字符串的形式返回目錄下的全部文件

· public File[] listFiles() 用File對象的形式返回目錄下的全部文件

· public String[] list(FilenameFilter obj) 用字符串的形式返回目錄下指定類型的全部文件

· public File[] listFiles(FilenameFilter obj) 用File對象的形式返回目錄下指定類型的全部文件

FilenameFliter接口

· 該接口有一個方法,第一個參數是指要查詢的文件夾,第二個參數是指指定的類型

public boolean accept(File dir, String name);

· 當File對象是一個目錄且調用list(FilenameFilter obj)或listFiles(FilenameFilter obj)方法時,obj不斷回掉接口方法,當返回值為true時,list方法就將名字為name的文件存放到返回的數組中。

測試類 DirTest.java

package com.fs.file;

import java.io.File;import java.io.FilenameFilter;import java.io.IOException;import java.util.Arrays;

public class DirTest {

public static void main(String[] args) throws IOException {

// 獲取File的目錄對象

File dirFile = new File("C:\\Users\\PRO\\Desktop\\dirTest2");

// 在磁盤中創建目錄

System.out.println(dirFile.mkdir());

// 在目錄中循環創建5個txt文件和java文件

for (int i = 0; i < 5; i++) {

File txtFile = new File("C:\\Users\\PRO\\Desktop\\dirTest2\\texFile" + i + ".txt");

File javaFile = new File("C:\\Users\\PRO\\Desktop\\dirTest2\\javaFile" + i + ".java");

System.out.println(txtFile.createNewFile());

System.out.println(javaFile.createNewFile());

}

// 數組里面裝的是文件名 如javaFile0.java

String[] list = dirFile.list();

System.out.println(Arrays.toString(list));

// 數組里面裝的是文件,以全路徑的方式表現出來 如C:\Users\PRO\Desktop\dirTest2\javaFile0.java

File[] listFiles = dirFile.listFiles();

System.out.println(Arrays.toString(listFiles));

// 通過匿名內部類的方式來實現FilenameFilter接口,獲取所有以“.java”結尾的文件

String[] javaList = dirFile.list(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

return name.endsWith(".java");

}

});

System.out.println(Arrays.toString(javaList));

// 通過自己編寫類來實現FilenameFilter接口,獲取所有以“.txt”結尾的文件

MyFlieFilter myFlieFilter = new MyFlieFilter(".txt");

String[] txtList = dirFile.list(myFlieFilter);

System.out.println(Arrays.toString(txtList));

}

}

自己編寫的實現FilenameFiler接口的類 MyFlieFilter.java

package com.fs.file;

import java.io.File;import java.io.FilenameFilter;

public class MyFlieFilter implements FilenameFilter{

// 定義一個私有變量,表示要查找的文件類型

private String filerName;

// 重寫接口中的方法

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return name.endsWith(filerName);

}

public String getFilerName() {

return filerName;

}

public void setFilerName(String filerName) {

this.filerName = filerName;

}

public MyFlieFilter(String filerName) {

super();

this.filerName = filerName;

}

}

小案例 刪除指定文件夾(如緩存目錄)ClearCache.java

· 我們知道,普通文件能直接刪除,但是當目錄下還有文件或目錄時,不能直接調用delete()方法刪除目錄,那么我們就只能通過遞歸來刪除目錄了。

package com.fs.file;

import java.io.File;import java.io.IOException;

public class ClearCache {

public static void main(String[] args) throws IOException {

// creatCacheDir();

File file = new File("C:\\Users\\PRO\\Desktop\\cacheTest");

deleteAllFile(file);

}

// 創建緩存文件夾,里面包含多個文件夾和文件,并還有多層結構

public static void creatCacheDir() throws IOException {

File cacheDir = new File("C:\\Users\\PRO\\Desktop\\cacheTest");

cacheDir.mkdir();

for (int i = 0; i < 5; i++) {

File childDir = new File("C:\\Users\\PRO\\Desktop\\cacheTest\\childDir" + i);

File childFile = new File("C:\\Users\\PRO\\Desktop\\cacheTest\\childFile" + i);

childDir.mkdir();

childFile.createNewFile();

for (int j = 0; j < 5; j++) {

File grandChildDir = new File("C:\\Users\\PRO\\Desktop\\cacheTest\\childDir" + i + "\\grandChildDir" + j);

File grandChildFile = new File("C:\\Users\\PRO\\Desktop\\cacheTest\\childDir" + i + "\\grandChildFile" + j);

grandChildDir.mkdir();

grandChildFile.createNewFile();

}

}

}

// 遞歸刪除文件夾

public static void deleteAllFile(File file) {

// 如果文件為空,直接返回

if (file == null) {

return;

}

if (file.exists()) {

if (file.isFile()) {

// 如果該文件是普通文件,直接刪除

file.delete();

System.out.println("已刪除文件" + file.getName());

} else if (file.isDirectory()) {

// 如果該文件是目錄,則循環遍歷該目錄,再遞歸刪除該文件

// 獲得該目錄下所有文件

File[] files = file.listFiles();

// 跳出遞歸條件:該目錄下文件已經被刪完

if (files == null) {

return;

}

// 自己調用自己,遞歸刪除文件

for (File subFile : files) {

deleteAllFile(subFile);

}

}

// 刪除文件本身

file.delete();

}

}

}

上一篇:java抽象類的作用

下一篇:嵌入式硬件工程師需要學習什么?哪些技能需要掌握?

戳我查看2019年嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2019 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號,京公海網安備11010802025203號

回到頂部

弗罗西诺内对拉齐奥 老虎机网 欢乐生肖游戏怎么玩 快三用什么方法稳挣呢 双色球杀号最精准专家 福建时时软件手机版下载 二八杠玩法 nba规则 山东时时开奖结果查询 重庆时时彩平台 最新娱乐信息 藏分出款成功率高吗 河内5分彩软件下载 在线北京pk10官网开奖 重庆时时彩杀号技巧 2019年七星彩趣味看图测彩