日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java IO流笔记4 --- File类

發布時間:2023/12/10 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java IO流笔记4 --- File类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • 1 概述
        • 2 獲取
          • 2.1 獲取 File類 本身的屬性
          • 2.2 獲取系統根目錄和容量
          • 2.3 獲取指定目錄全部文件
        • 3 創建與刪除
        • 4 判斷
        • 5 重命名
        • 6 過濾器

1 概述

IO流,流對象,只能操作設備上的數據,其他的都操作不了。
文件夾,文件的屬性(文件的創建,修改,讀寫屬性,文件名等),這些需要用 File類來操作。

File類

用來將文件或者文件夾(目錄) 封裝成對象

文件一旦變為對象,可以先操作文件,再操作文件中的數據

方便對文件或者文件夾的屬性信息進行操作
File對象可以作為參數,傳遞給流的構造函數

文件一旦變為對象,可以先操作文件,再操作文件中的數據,可以將一個已存在的,或者不存在的 文件或者目錄 封裝成 File對象

幾個構造函數
File(String pathname)
通過 將給定路徑 名字字符串 轉換為抽象路徑名  來創建一個 新File實例
例:File f1 = new File("c:\\a.txt"); // 想把誰封裝成對象,把誰往里寫就可以了

File(String parent, String child) File(File parent, String child)
根據 parent路徑名 字符串 和 child路徑名 字符串,創建一個 新File實例
例:File f2 = new File("c:\\","a.txt");
File( URI uri )
通過 將給定的 file: URI 轉換為一個 抽象路徑名 來創建一個 新的File實例

File類的功能主要分為5種:獲取,創建與刪除,判斷,重命名,過濾器,下面分別講解

2 獲取

2.1 獲取 File類 本身的屬性

獲取 File類 本身的屬性,包括,獲取文件名稱,文件路徑,文件大小,文件修改時間等

File f = new File("G:\\test\\GestureTest\\a.txt"); String name = f.getName(); String absPath = f.getAbsolutePath(); // 絕對路徑 String path = f.getPath(); long len = f.length(); // 文件的大小 long time = f.lastModified(); // 文件上次的修改時間 // 打印出來的時間是 1336102144203 怎么把它變為有效的時間 Date date = new Date(time); // 先把時間封裝 // 把時間 格式化 DateFormat dateFormate = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); String str_time = dateFormate.format(date); // 怎么判斷文件有沒有被改寫,判斷文件上次修改時間 // 單獨開辟一條線程,監控文件的修改時間,一旦文件修改,就重新讀取文件的內容System.out.println("parent:"+ f.getParent()); // getParent() 獲取父目錄 System.out.println("name:"+name); System.out.println("absPath:"+absPath); System.out.println("path:"+path); System.out.println("len:"+len); System.out.println("time:"+time);

輸出結果

parent:G:\test\GestureTest name:a.txt absPath:G:\test\GestureTest\a.txt path:G:\test\GestureTest\a.txt len:35 time:1537322126301
2.2 獲取系統根目錄和容量

static File listRoots() 列出可用的文件系統根

private static void getListRoots() {File[] files = File.listRoots();for(File file:files){System.out.println(file); // 這個打印電腦根目錄 C:\ D:\ E:\ F:\ G:\}File file = new File("G:\\");System.out.println("getFreeSpace:"+file.getFreeSpace()); // 常用System.out.println("getTotalSpace:"+file.getTotalSpace());System.out.println("getUsableSpace:"+file.getUsableSpace()); }

輸出結果:

C:\ D:\ E:\ F:\ G:\ getFreeSpace:32711270400 getTotalSpace:161060220928 getUsableSpace:32711270400
2.3 獲取指定目錄全部文件

如果現在給出了一個目錄,則可以直接列出目錄中的內容。列出的方法在File類中存在兩個:

  • 以字符串數組的形式返回:public String[] list()
  • 以File數組的形式返回:public File[] listFiles()

分別演示如下:
public String[] list() ,以字符串數組的形式返回,列出了全部的名字,包括文件夾得名字和文件的名字

private static void getList() {File f = new File("G:"+ File.separator);String[] str = f.list();for(String s:str){System.out.println(s);} }

輸出結果:

$RECYCLE.BIN a app cpcopy demo exerise JAVA Javaex JAVA視頻 jdk jing Jlex ... ...

public File[] listFiles(),以File數組的形式返回,列出了全部路徑

private static void getlistFiles() {File f = new File("G:"+File.separator);File[] files = f.listFiles();for(File file:files){System.out.println(file);} }

輸出結果:

G:\$RECYCLE.BIN G:\a G:\app G:\cpcopy G:\demo G:\exerise G:\JAVA ... ...

3 創建與刪除

文件的創建與刪除,方法的返回類型是 boolean類型

// 文件的創建和刪除 File file = new File("file.txt"); // 和輸出流不一樣,如果文件不存在,則創建,如果文件存在,則不創建 boolean b = file.createNewFile(); System.out.println("b="+b); boolean b = file.delete(); System.out.println("b="+b);// 文件夾的創建與刪除 File dir = new File("abc\\q\\e\\c\\z\\r\\w\\y\\f\\e\\g\\s"); //創建多級目錄 boolean b = dir.mkdir();//make directory // 創建單級目錄 dir.mkdirs(); //創建多級目錄 System.out.println(dir.delete()); // 文件夾的刪除 System.out.println(dir.delete()); // 文件夾的刪除 說明: windows的刪除是從里往外刪的,如果文件夾里有內容,直接刪除,是刪不掉的 如果文件夾里沒有內容,直接刪可以刪掉對于多級目錄,使用 delete()方法,返回true,最里面的 s 被刪除掉如果文件正在被流所操作,同樣也是刪不掉

4 判斷

我們若想操作一個文件,就要先判斷這個文件存不存在

File f = new File("a.txt"); boolean b = f.exists(); System.out.println("b="+b); // --- 判斷一個文件是否存在的代碼File f = new File("aaa"); f.mkdir(); // 執行完這句,建立一個名為 aaa.txt的文件夾File f = new File("aaa"); f.createNewFile(); // 建立一個文件aaa不一定是目錄,a.txt 也不一定是文件所以如果文件未知,在操作前,先判斷一下是否存在File f=new File("d:"+File.separator+"test.txt");if(f.exists()){// 進行操作}else{try {f.createNewFile(); // 不存在,就創建文件} catch (IOException e) {e.printStackTrace();}} }

5 重命名

如果在同一個目錄下,是重命名,如果不在同一目錄下,是剪切

public static void renameToDemo() {File f1 = new File("c:\\9.mp3");File f2 = new File("d:\\aa.mp3");boolean b = f1.renameTo(f2);System.out.println("b="+b);}

6 過濾器

常用方法

String[] list( FilenameFilter filter )
返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中,滿足指定過濾器的文件和目錄
FilenameFilter --- 接口

原理

過濾器,第一步做的,還是先調用 list,把這個 list下,所有目錄都拿到,然后遍歷數組,只要符合自己創建的 FilenameFilter.accept(dir, name);,只要返回true,就把符合條件的 內容 往數組里存

代碼實例1

// 過濾器 --- 找發非隱藏文件 public class FilterByHidden implements FileFilter {public boolean accept(File pathname) {return !pathname.isHidden();} }private static void hiddenFile() {File f = new File("C:\\");File[] files = f.listFiles(new FilterByHidden());for(File file: files){System.out.println(file);}}

輸出結果

C:\AppData C:\BluetoothExchangeFolder C:\dlcache C:\Documents and Settings C:\inetpub C:\Intel C:\MiFlashvcom.ini C:\PerfLogs C:\Program Files C:\Program Files (x86) C:\SWSETUP C:\unintall.log C:\Users C:\WiFi_Log.txt C:\Windows

代碼實例2 專門用于過濾后綴名的過濾器

public class SuffixFilte implements FilenameFilter {private String suffix ; // 我要過濾什么,不知道,你傳什么,我過濾什么 public SuffixFilte(String suffix) {super();this.suffix = suffix;}public boolean accept(File dir, String name) {return name.endsWith(suffix);} }private static void txtFile() {File f = new File("C:\\");File[] files = f.listFiles(new SuffixFilte(".txt"));for(File file: files){System.out.println(file);}}

輸出結果:

C:\WiFi_Log.txt

總結

以上是生活随笔為你收集整理的Java IO流笔记4 --- File类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。