溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

File類如何正確的在Java中使用

發(fā)布時間:2020-12-15 14:31:17 來源:億速云 閱讀:208 作者:Leah 欄目:開發(fā)技術(shù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)File類如何正確的在Java中使用 ,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Java文件類以抽象的方式代表文件名和目錄路徑名。該類本身不能用來讀數(shù)據(jù)或?qū)憯?shù)據(jù),它主要用于磁盤上文件和目錄的創(chuàng)建、文件的查找和文件的刪除。做一些非讀寫方面的工作,比如看看文件是否存在、是否可讀寫及遍歷文件目錄等等。要想讀寫數(shù)據(jù),必須和其它io流的類配合使用,比如FileInputStream、FileOutputStream等。File對象代表磁盤中實際存在的文件和目錄。

這是整個File簡單使用的代碼:

1 package com.tianjh;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 
 6 /**
 7 * Created on 2020/12/10
 8 * File類的基本使用
 9 *
 10 */
 11 public class FileDemo {
 12 public static void main(String[] args) {
 13 String dirname = "D:/Demo";
 14 // 實例化一個File對象
 15 File f1 = new File(dirname);
 16 
 17 // 1. 遍歷指定目錄之下的所有文件
 18 // 判斷f1對象是否是一個目錄
 19 if (f1.isDirectory()) {
 20 System.out.println("Directory of " + dirname);
 21 String[] s = f1.list();
 22 // 遍歷s數(shù)組,取出數(shù)組中的元素進行判斷
 23 for (int i = 0; i < s.length; i++) {
 24  File f = new File(dirname + "/" + s[i]);
 25  if (f.isDirectory()) {
 26  System.out.println(s[i] + " is a directory");
 27  } else {
 28  System.out.println(s[i] + " is a file");
 29  }
 30 }
 31 } else {
 32 // 不是一個目錄
 33 System.out.println(dirname + " is not a directory");
 34 }
 35 // expected output:
 36 // Directory of D:/Demo
 37 // BufferedInputStream.java is a file
 38 // BufferedOutputStream.java is a file
 39 // childFile is a directory
 40 
 41 /*
 42 * 2. 測試指定文件是否可執(zhí)行
 43 * 測試應用程序是否可以執(zhí)行此抽象路徑名表示的文件
 44 * true: 當且僅當存在抽象路徑名,并允許應用程序執(zhí)行該文件時
 45 */
 46 System.out.println(dirname + " allowed to execute? " + f1.canExecute());
 47 // expected output: D:/Demo allowed to execute? true
 48 
 49 
 50 /*
 51 * 3. 測試指定文件是否可讀取
 52 * 測試應用程序是否可以讀取由此抽象路徑名表示的文件
 53 * true: 當且僅當此抽象路徑名指定的文件存在并可由應用程序讀取時;
 54 * false: 與true相反
 55 */
 56 System.out.println(dirname + " allowed to read? " + f1.canRead());
 57 // expected output: D:/Demo allowed to read? true
 58 
 59 /*
 60 * 4. 測試指定文件是否可寫
 61 * 測試應用程序是否可以修改由此抽象路徑名表示的文件
 62 * true: 當且僅當文件系統(tǒng)實際上包含由該抽象路徑名表示的文件并且允許應用程序?qū)懭朐撐募r;
 63 * false: 與true相反
 64 */
 65 System.out.println(dirname + " allowed to write? " + f1.canWrite());
 66 // expected output: D:/Demo allowed to write? true
 67 
 68 /*
 69 * 5. 比較抽象路徑名和參數(shù)抽象路徑名是否相等
 70 * 比較兩個抽象的路徑名字典是否相等 等于零則相等,小于零則抽象路徑名字典小于參數(shù)路徑字典,大于則相反
 71 * 比較規(guī)則按照字典順序進行排序
 72 */
 73 String s1 = "C:/Boot";
 74 // “D:/Demo” 與 "C:/Boot" 比較
 75 System.out.println(f1.compareTo(new File(s1)));
 76 // expected output: 1
 77 String s2 = "D:/Deoo";
 78 // “D:/Demo” 與 "D:/Deoo" 比較
 79 System.out.println(f1.compareTo(new File(s2)));
 80 // expected output: -2
 81 
 82 
 83 /*
 84 * 6. 創(chuàng)建一個新文件
 85 * 當且僅當具有該名稱的文件尚不存在時,原子地創(chuàng)建一個由該抽象路徑名命名的新的空文件
 86 * true: 如果命名文件不存在并被成功創(chuàng)建;
 87 * false: 如果命名文件已經(jīng)存在
 88 */
 89 File f3 = new File("/Boot");
 90 try {
 91 System.out.println("/Boot file is created? " + f3.createNewFile());
 92 // expected output: /Boot file is created? false
 93 } catch (IOException e) {
 94 e.printStackTrace();
 95 }
 96 
 97 /*
 98 * 7. 創(chuàng)建一個目錄
 99 * 創(chuàng)建由此抽象路徑名命名的目錄
100 */
101 String dirnames = "D:/tmp/boot";
102 File f4 = new File(dirnames);
103 // 創(chuàng)建一個文件夾,成功則返回true,失敗則返回false。
104 // 失敗表明File對象指定的路徑已經(jīng)存在,或者由于整個路徑還不存在,該文件夾不能被創(chuàng)建。
105 System.out.println("create mkdir is " + f4.mkdir());
106 // expected output: create mkdir is true
107 
108 
109 /*
110 * 8. 創(chuàng)建一個目錄,包括其不存在的父級目錄
111 * 創(chuàng)建一個文件夾和它的所有父文件夾 失敗表明File對象指定的路徑已經(jīng)存在
112 */
113 System.out.println("create mkdirs is " + f4.mkdirs());
114 // expected output: create mkdirs is false
115 
116 
117 /*
118 * 9. 刪除文件或者目錄
119 * 刪除由此抽象路徑名表示的文件或目錄
120 * true當且僅當文件或目錄被成功刪除時; false否則
121 */
122 System.out.println(dirnames + " deleted is " + f4.delete());
123 // expected output: D:/tmp/boot deleted is true
124 
125 
126 /*
127 * 10. 取得抽象路徑的名稱
128 * 取到抽象路徑名表示的文件或目錄的名稱
129 */
130 System.out.println("getName is " + f1.getName());
131 // expected output: getName is Demo
132 
133 
134 /*
135 * 11. 取得抽象路徑的字符串
136 * 獲得由抽象路徑名轉(zhuǎn)換為路徑名字符串
137 */
138 System.out.println("getPath is " + f1.getPath());
139 // expected output: getPath is D:\Demo
140 
141 /*
142 * 12. 取得抽象路徑的絕對路徑
143 * 獲得此抽象路徑名的絕對路徑名字符串
144 */
145 System.out.println("Absolute Path is " + f1.getAbsolutePath());
146 // expected output: Absolute Path is D:\Demo
147 
148 
149 /*
150 * 13. 判斷抽象路徑指定的文件或目錄是否存在
151 * 測試此抽象路徑名表示的文件或目錄是否存在
152 * true: 當且僅當存在由此抽象路徑名表示的文件或目錄時;
153 * false: 與true相反
154 */
155 System.out.println(f1.exists() ? "exist" : "not");
156 // expected output: exist
157 }
158 
159 }

FileDemo.Java

下面分別介紹常用的幾種方法:

1、遍歷指定目錄之下的所有文件( 遍歷" D:/Demo "中的所有文件及目錄)

D磁盤中Demo目錄的結(jié)果如下所示:

File類如何正確的在Java中使用

示例代碼:

String dirname = "D:/Demo";
 // 實例化一個File對象
 File f1 = new File(dirname);

 // 1. 遍歷指定目錄之下的所有文件
 // 判斷f1對象是否是一個目錄
 if (f1.isDirectory()) {
  System.out.println("Directory of " + dirname);
  String[] s = f1.list();
  // 遍歷s數(shù)組,取出數(shù)組中的元素進行判斷
  for (int i = 0; i < s.length; i++) {
  File f = new File(dirname + "/" + s[i]);
  if (f.isDirectory()) {
   System.out.println(s[i] + " is a directory");
  } else {
   System.out.println(s[i] + " is a file");
  }
  }
 } else {
  // 不是一個目錄
  System.out.println(dirname + " is not a directory");
 }
 // expected output:
 // Directory of D:/Demo
 // BufferedInputStream.java is a file
 // BufferedOutputStream.java is a file
 // childFile is a directory

輸出結(jié)果:

File類如何正確的在Java中使用

2、測試指定文件是否可執(zhí)行

/*
  * 2. 測試指定文件是否可執(zhí)行
  * 測試應用程序是否可以執(zhí)行此抽象路徑名表示的文件
  * true: 當且僅當存在抽象路徑名,并允許應用程序執(zhí)行該文件時
  */
 System.out.println(dirname + " allowed to execute? " + f1.canExecute());
 // expected output: D:/Demo allowed to execute? true

3、測試指定文件是否可讀取

/*
  * 3. 測試指定文件是否可讀取
  * 測試應用程序是否可以讀取由此抽象路徑名表示的文件
  * true: 當且僅當此抽象路徑名指定的文件存在并可由應用程序讀取時;
  * false: 與true相反
  */
 System.out.println(dirname + " allowed to read? " + f1.canRead());
 // expected output: D:/Demo allowed to read? true

4、測試指定文件是否可寫

/*
  * 4. 測試指定文件是否可寫
  * 測試應用程序是否可以修改由此抽象路徑名表示的文件
  * true: 當且僅當文件系統(tǒng)實際上包含由該抽象路徑名表示的文件并且允許應用程序?qū)懭朐撐募r;
  * false: 與true相反
  */
 System.out.println(dirname + " allowed to write? " + f1.canWrite());
 // expected output: D:/Demo allowed to write? true

樣例2、3、4的結(jié)果可參考Demo 的屬性

File類如何正確的在Java中使用

5、比較抽象路徑名和參數(shù)抽象路徑名是否相等,根據(jù)字典順序進行比較

/*
  * 5. 比較抽象路徑名和參數(shù)抽象路徑名是否相等
  * 比較兩個抽象的路徑名字典是否相等 等于零則相等,小于零則抽象路徑名字典小于參數(shù)路徑字典,大于則相反
  * 比較規(guī)則按照字典順序進行排序
  */
 String s1 = "C:/Boot";
 // “D:/Demo” 與 "C:/Boot" 比較
 System.out.println(f1.compareTo(new File(s1)));
 // expected output: 1
 String s2 = "D:/Deoo";
 // “D:/Demo” 與 "D:/Deoo" 比較
 System.out.println(f1.compareTo(new File(s2)));
 // expected output: -2

結(jié)果:

File類如何正確的在Java中使用

6、創(chuàng)建一個新文件

/*
  * 6. 創(chuàng)建一個新文件
  * 當且僅當具有該名稱的文件尚不存在時,原子地創(chuàng)建一個由該抽象路徑名命名的新的空文件
  * true: 如果命名文件不存在并被成功創(chuàng)建;
  * false: 如果命名文件已經(jīng)存在
  */
 File f3 = new File("/Boot");
 try {
  System.out.println("/Boot file is created? " + f3.createNewFile());
  // expected output: /Boot file is created? false
 } catch (IOException e) {
  e.printStackTrace();
 }

結(jié)果:

File類如何正確的在Java中使用

7、創(chuàng)建一個目錄

/*
  * 7. 創(chuàng)建一個目錄
  * 創(chuàng)建由此抽象路徑名命名的目錄
  */
 String dirnames = "D:/tmp/boot";
 File f4 = new File(dirnames);
 // 創(chuàng)建一個文件夾,成功則返回true,失敗則返回false。
 // 失敗表明File對象指定的路徑已經(jīng)存在,或者由于整個路徑還不存在,該文件夾不能被創(chuàng)建。
 System.out.println("create mkdir is " + f4.mkdir());
 // expected output: create mkdir is true

結(jié)果:

File類如何正確的在Java中使用

8、創(chuàng)建一個目錄,包括其不存在的父級目錄,因為在上列中創(chuàng)建了對應的目錄文件,所有mkdirs創(chuàng)建就返還false

/*
 * 8. 創(chuàng)建一個目錄,包括其不存在的父級目錄
 * 創(chuàng)建一個文件夾和它的所有父文件夾 失敗表明File對象指定的路徑已經(jīng)存在
 */
System.out.println("create mkdirs is " + f4.mkdirs());
// expected output: create mkdirs is false

9、刪除文件或者目錄(刪除前面創(chuàng)建的/tmp路徑下的boot)

/*
  * 9. 刪除文件或者目錄
  * 刪除由此抽象路徑名表示的文件或目錄
  * true當且僅當文件或目錄被成功刪除時; false否則
  */
 System.out.println(dirnames + " deleted is " + f4.delete());
 // expected output: D:/tmp/boot deleted is true

結(jié)果:

File類如何正確的在Java中使用

10、取得抽象路徑的名稱

/*
  * 10. 取得抽象路徑的名稱
  * 取到抽象路徑名表示的文件或目錄的名稱
  */
 System.out.println("getName is " + f1.getName());
 // expected output: getName is Demo

結(jié)果:

File類如何正確的在Java中使用

11、取得抽象路徑的字符串

/*
  * 11. 取得抽象路徑的字符串
  * 獲得由抽象路徑名轉(zhuǎn)換為路徑名字符串
  */
 System.out.println("getPath is " + f1.getPath());
 // expected output: getPath is D:\Demo

結(jié)果:

File類如何正確的在Java中使用

12、取得抽象路徑的絕對路徑

/*
  * 12. 取得抽象路徑的絕對路徑
  * 獲得此抽象路徑名的絕對路徑名字符串
  */
 System.out.println("Absolute Path is " + f1.getAbsolutePath());
 // expected output: Absolute Path is D:\Demo

結(jié)果:

File類如何正確的在Java中使用

13、判斷抽象路徑指定的文件或目錄是否存在

/*
  * 13. 判斷抽象路徑指定的文件或目錄是否存在
  * 測試此抽象路徑名表示的文件或目錄是否存在
  * true: 當且僅當存在由此抽象路徑名表示的文件或目錄時;
  * false: 與true相反
  */
 System.out.println(f1.exists() ? "exist" : "not");
 // expected output: exist

結(jié)果:

File類如何正確的在Java中使用

上述就是小編為大家分享的File類如何正確的在Java中使用 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI