程序員可通過File類在硬盤上操作文件和目錄。File類只能表示文件/目錄的信息(如名稱、大小),不能用于文件的訪問。
import java.io.File;import java.io.IOException;public class FileDemo { public static void main(String[] args) { /* * 假設在F盤下有一個文件Java * 由于/是轉義字符,所以在路徑中要用雙斜杠 */ File file1=new File("F://Java"); //File類的構造函數(shù) /* * File.separator用于設置分隔符 這樣任何系統(tǒng)都認識中間的分隔符 */ File file11=new File("F:"+File.separator+"Java"); System.out.PRintln(file1.exists()); //判斷文件/文件夾是否存在 true System.out.println(file11.exists()); //判斷文件/文件夾是否存在 true File file2=new File("F://Java//IO//File"); if(!file2.exists()){ /* * 創(chuàng)建多級目錄用mkdirs(),創(chuàng)建一級目錄用mkdir() */ file2.mkdirs();//文件不存在,自動創(chuàng)建IO和File //file2.mkdir(); //僅僅創(chuàng)建IO } else{ file2.delete();//如果目錄存在,刪除文件夾File } /* * 判斷是否是一個目錄 * 如果是目錄返回true,如果不是目錄或者目錄不存在返回false */ System.out.println(file1.isDirectory()); //true /* * 判斷是否是一個文件 */ System.out.println(file1.isFile()); //false File file3=new File("F://Java//IO//File//日記1.txt"); //File file33=new File("F://Java//IO//File","日記1.txt"); //功能與上面的語句相同 System.out.println(file3.isFile()); //false if(!file3.exists()) try{ file3.createNewFile(); //自動添加異常處理 }catch(IOException e){ e.printStackTrace(); } else file3.delete(); System.out.println(file3.isFile()); //true /* * 常用的File對象的API */ //直接打印file1,打印的是file1.toString()的內(nèi)容 System.out.println(file1); //F:/Java System.out.println(file1.getAbsolutePath());//功能與上面的語句相同 System.out.println(file1.getName());//打印最后的目錄名 Java System.out.println(file1.getParent());//得到父目錄的路徑 F:/ System.out.println(file1.getParentFile());//功能與上面的語句相同 System.out.println(file3.getName()); //日記1.txt System.out.println(file3.getParent()); //F:/Java/IO/File System.out.println(file3.getParentFile()); }}import java.io.File;import java.io.IOException;/* * 列出File類的一些常用操作 比如過濾、遍歷等操作 * 假設F盤下有一個文件夾名為java,java下有一文件夾名為IO * IO下有一文件夾名為new,還有一文件名為new.txt * new下有一文件夾名為new1,還有一文件名為new1.txt */class FileUtils { /** * 列出指定目錄下(包括其子目錄下)的所有文件 * @param dir * @throws IOException */ public static void listDirectory(File dir)throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目錄:"+dir+"不存在."); } //list()方法用于列出當前目錄下文件名和文件夾名 String[] filenames=dir.list(); System.out.println("目錄"+dir+"下的文件名和文件夾名:"); for(String f:filenames){ System.out.println(f); //不包含子目錄下的文件名和文件夾名 } /*System.out.println("目錄"+dir+"的子目錄:"); for(String f:filenames){ System.out.println(dir+"//"+f); }*/ //該注釋掉的內(nèi)容與下面的listFiles()方法功能相同 //listFiles()方法用于返回子目錄 File[] files=dir.listFiles(); System.out.println("目錄"+dir+"的子目錄:"); for(File file:files){ System.out.println(file); } System.out.println(); if(files!=null&&files.length>0){ //files!=null用來判斷是否有子目錄 for(File file:files){ if(file.isDirectory()){ //遞歸 System.out.println("將目錄 "+file+" 傳給listDirectory()進行遞歸:"); listDirectory(file); } } } }}public class FileUtilsTest{ public static void main(String[] args)throws IOException{ FileUtils.listDirectory(new File("F://Java")); }}運行結果:
目錄F:/Java下的文件名和文件夾名:538685de0001832c00000000.rarIOxml字符編碼目錄F:/Java的子目錄:F:/Java/538685de0001832c00000000.rarF:/Java/IOF:/Java/XMLF:/Java/字符編碼將目錄 F:/Java/IO 傳給listDirectory()進行遞歸:目錄F:/Java/IO下的文件名和文件夾名:newnew.txt目錄F:/Java/IO的子目錄:F:/Java/IO/newF:/Java/IO/new.txt將目錄 F:/Java/IO/new 傳給listDirectory()進行遞歸:目錄F:/Java/IO/new下的文件名和文件夾名:new1new1.txt目錄F:/Java/IO/new的子目錄:F:/Java/IO/new/new1F:/Java/IO/new/new1.txt將目錄 F:/Java/IO/new/new1 傳給listDirectory()進行遞歸:目錄F:/Java/IO/new/new1下的文件名和文件夾名:目錄F:/Java/IO/new/new1的子目錄:將目錄 F:/Java/XML 傳給listDirectory()進行遞歸:目錄F:/Java/XML下的文件名和文件夾名:books.txtbooks.xml目錄F:/Java/XML的子目錄:F:/Java/XML/books.txtF:/Java/XML/books.xml將目錄 F:/Java/字符編碼 傳給listDirectory()進行遞歸:目錄F:/Java/字符編碼下的文件名和文件夾名:目錄F:/Java/字符編碼的子目錄:
新聞熱點
疑難解答