Java的File类
生活随笔
收集整理的這篇文章主要介紹了
Java的File类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- File類的理解
- 常用構造器
- 常用方法
- 代碼示例
- 練習
File類的理解
1.File類的一個對象,代表一個文件或一個文件目錄(俗稱:文件夾)
2.File類聲明在java.io中
3.File類中涉及到關于文件或文件目錄的創建、刪除、重命名、修改時間、文件大小等方法,并沒有涉及到寫入或讀取文件內容的操作如果需要讀取或寫入文件內容,必須使用IO流來完成
4.后續File類的對象常會作為參數傳遞到流的構造器中,指明讀取或寫入的“終點”
5.File不能訪問文件內容本身
6.想要在Java程序中表示一個真實存在的文件或目錄,那么必須有一個File對象,但是Java程序中的一個File對象,可能沒有一個真實存在的文件或目錄
常用構造器
常用方法
代碼示例
package com.atguigu.java;import org.junit.Test;import java.io.File;
import java.io.IOException;
import java.util.Date;public class FileTest {/*1.如何創建File類的實例File(String filePath)File(String parentPath,String childPath)2.相對路徑:相較于某個路徑下,指明的路徑絕對路徑:包含盤符在內的文件或文件目錄的路徑3.路徑分隔符Windows://unix:/*/@Testpublic void test1(){//構造器1File file1=new File("hello.txt");//相對于當前moudleFile file2=new File("D:\\workspace_idea1\\JavaSenior\\day08\\he.txt");//絕對路徑//此時還沒有對文件中的內容進行修改等操作//還認為是內存中的對象System.out.println(file1);System.out.println(file2);//構造器2File file3=new File("D:\\workspace_idea1","JavaSenior");System.out.println(file3);//構造器3File file4=new File(file3,"hi.txt");System.out.println(file4);}/****如下兩個方法適用于文件目錄:* public String[]list():獲取指定目錄下的所有文件或者文件目錄的名稱數組* public File[] listFiles(): 獲取指定目錄下的所有文件或者文件目錄的File數組*/@Testpublic void test2(){File file1=new File("hello.txt");File file2=new File("d:\\io\\hi.txt");System.out.println(file1.getAbsolutePath());System.out.println(file1.getPath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(new Date(file1.lastModified()));//最近一次修改時間System.out.println();System.out.println(file2.getAbsolutePath());System.out.println(file2.getPath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());}@Testpublic void test3(){File file=new File("D:\\workspace_idea1\\JavaSenior");String[] list = file.list();for (String s:list){System.out.println(s);//輸出名字}System.out.println();File[] files = file.listFiles();for (File f:files){System.out.println(f);//會獲得具體路徑}}/*public boolean renameTo(File dest):把文件重命名為指定的文件路徑比如: file1.renameTo(file2)為例要想保證返回true,需要file1在硬盤中存在,而且file2不能在硬盤中存在*/@Testpublic void test4(){File file1=new File("hello.txt");File file2=new File("D:\\io\\hi.txt");boolean rename = file1.renameTo(file2);System.out.println(rename);}@Testpublic void test6() throws IOException {//文件創建File file1=new File("hi.txt");if (!file1.exists()){file1.createNewFile();//文件不存在就創建System.out.println("創建成功");}else {//文件存在就刪除file1.delete();System.out.println("刪除成功");}}}
練習
1.判斷指定目錄下是否有后綴名為.jpg的文件,如果有,就輸出該文件名稱
package com.atguigu.exer;import org.junit.Test;import java.io.File;
import java.io.FilenameFilter;public class FindJPGFileTest {@Testpublic void test1(){File srcFile = new File("d:\\code");String[] fileNames = srcFile.list();for(String fileName : fileNames){if(fileName.endsWith(".jpg")){System.out.println(fileName);}}}@Testpublic void test2(){File srcFile = new File("d:\\code");File[] listFiles = srcFile.listFiles();for(File file : listFiles){if(file.getName().endsWith(".jpg")){System.out.println(file.getAbsolutePath());}}}/** File類提供了兩個文件過濾器方法* public String[] list(FilenameFilter filter)* public File[] listFiles(FileFilter filter)*/@Testpublic void test3(){File srcFile = new File("d:\\code");File[] subFiles = srcFile.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".jpg");}});for(File file : subFiles){System.out.println(file.getAbsolutePath());}}}
2.遍歷指定目錄所有文件名稱,包括子文件目錄中的文件。
拓展1:并計算指定目錄占用空間的大小
拓展2:刪除指定文件目錄及其下的所有文件
package com.atguigu.exer;import java.io.File;public class ListFilesTest {public static void main(String[] args) {// 遞歸:文件目錄/** 打印出指定目錄所有文件名稱,包括子文件目錄中的文件 */// 1.創建目錄對象File dir = new File("D:\\BaiduNetdiskDownload\\Java\base\course ");// 2.打印目錄的子文件printSubFile(dir);}public static void printSubFile(File dir) {// 打印目錄的子文件File[] subfiles = dir.listFiles();for (File f : subfiles) {if (f.isDirectory()) {// 文件目錄printSubFile(f);} else {// 文件System.out.println(f.getAbsolutePath());}}}// 方式二:循環實現// 列出file目錄的下級內容,僅列出一級的話// 使用File類的String[] list()比較簡單public void listSubFiles(File file) {if (file.isDirectory()) {String[] all = file.list();for (String s : all) {System.out.println(s);}} else {System.out.println(file + "是文件!");}}// 列出file目錄的下級,如果它的下級還是目錄,接著列出下級的下級,依次類推// 建議使用File類的File[] listFiles()public void listAllSubFiles(File file) {if (file.isFile()) {System.out.println(file);} else {File[] all = file.listFiles();// 如果all[i]是文件,直接打印// 如果all[i]是目錄,接著再獲取它的下一級for (File f : all) {listAllSubFiles(f);// 遞歸調用:自己調用自己就叫遞歸}}}// 拓展1:求指定目錄所在空間的大小// 求任意一個目錄的總大小public long getDirectorySize(File file) {// file是文件,那么直接返回file.length()// file是目錄,把它的下一級的所有大小加起來就是它的總大小long size = 0;if (file.isFile()) {size += file.length();} else {File[] all = file.listFiles();// 獲取file的下一級// 累加all[i]的大小for (File f : all) {size += getDirectorySize(f);// f的大小;}}return size;}// 拓展2:刪除指定的目錄public void deleteDirectory(File file) {// 如果file是文件,直接delete// 如果file是目錄,先把它的下一級干掉,然后刪除自己if (file.isDirectory()) {File[] all = file.listFiles();// 循環刪除的是file的下一級for (File f : all) {// f代表file的每一個下級deleteDirectory(f);}}// 刪除自己file.delete();}}
總結
以上是生活随笔為你收集整理的Java的File类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的多态机制
- 下一篇: Java 类和对象的内存分配机制