Java輸入與輸出(I/O)---- File類(一)

File類(java.io.File)

      File類:是文件和目錄路徑名的抽象表示。

      1、File類的構造方法:

          (1)、public File(String pathname):通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的File實例。 如果給定                          的字符串是空字符串,則結果是空的抽象路徑名。其中pathname是路徑名字符串

         (2)、public File(String parent, String child):從父路徑名字符串和子路徑名字符串創建新的File實例。其中parent是父                         路 徑名字符串,child是子路徑名字符串

          (3)、public File(File parent, String child):從父抽象路徑名和子路徑名字符串創建新的File實例。其中parent是父路徑                        名字符串,child是子路徑名字符串

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

        2、File類常用的方法:

             public  boolean exists():測試當前對象所指的文件或目錄是否存在,若存在,則返回true,否則返回false;

             public boolean isDirectory():測試當前對象是否爲目錄,若當前對象是目錄,則返回true,否則返回false;

             public boolean isFile():測試當前對象是否爲文件,若當前對象是文件,則返回true,否則返回false;

             public boolean delete():刪除當前對象所指的文件(目錄只能刪空目錄),若刪除成功,則返回true,否則返回false;

             public boolean mkdir():在當前對象指定的路徑上創建一個目錄;

             public boolean mkdirs():在當前對象指定的路徑上創建目錄及子目錄,不包括子文件;

             public boolean renameTo(File dest):重命名由此抽象路徑名錶示的文件,將文件名改爲dest;

             public long length():返回由此抽象路徑名錶示的文件的長度;

             public File[] listFiles():返回一個抽象路徑名數組,表示由該抽象路徑名錶示的目錄中的文件及目錄,不包括子文件;

             public String[] list():返回一個字符串數組,命名由此抽象路徑名錶示的目錄中的文件和目錄;

             public boolean createNewFile():當且僅當文件不存在時,創建一個由該抽象路徑名命名的新的空文件;

             public String getName():返回由此抽象路徑名錶示的文件或目錄的名稱;

             public long lastModified():返回文件最後修改的日期,以long型來表示;

             public boolean canread():測試這個文件是否爲可讀; 

             public boolean canwrite():測試這個文件是否可寫;

             public boolean setReadOnly():將當前文件設爲只讀;

             public String getPath():將此抽象路徑名轉換爲路徑名字符串,如果File生成對象時採用的是絕對路徑,那麼它返回絕                                                        對路徑,如果是相對路徑,那麼它返回相對路徑;

             public String getParent():返回此抽象路徑名的父路徑名;

             public String getAbsolutePath():返回此抽象路徑名的絕對路徑名;

      •  

     3、舉例

        (1)如果E:\work\IO目錄下a.txt文件不存在,創建新文件,如果文件存在,則刪除此文件             

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

public class FileTest {

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

                //建立程序和磁盤上文件的聯繫
		File file = new File("E:\\work\\IO\\a.txt");
		
		//如果文件不存在,創建新文件,如果文件存在,則刪除此文件
		if(!file.exists()) {
			System.out.println("文件不存在,創建新文件");
			file.createNewFile();
		}else {
			System.out.println("文件存在,刪除此文件");
			file.delete();
		}
	}
}

    (2)創建E:\work\IO目錄下a與b目錄,a目錄下再建子目錄aa,b目錄再建子目錄bb

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

public class FileTest {

	public static void main(String[] args) throws IOException {
		
		//建立程序和磁盤上文件的聯繫
		File file1 = new File("E:\\work\\IO\\a\\aa");
		File file2 = new File("E:\\work\\IO\\b");
		if(!file1.exists() && !file2.exists()) {
			file1.mkdirs();
			file2.mkdirs();
		}else {
			System.out.println("不建子目錄和子文件");
		}
    }
}

        (3)、獲取指定目錄下(E:\codete)所有的文件及文件夾名稱

import java.io.File;

public class FileTestName {
	
	public static void main(String[] args) {
		File file = new File("E:/codete");
		
		//返回codete目錄下所有的文件及文件夾
		File[] files = file.listFiles();
		for (File f: files) {
			System.out.println(f.getName());			
		}
	}
}

       (4)將E:\codete目錄下所有的圖片文件按照最後修改的時間排序,並修改圖片文件名,以1,2,3...順序重新命名圖片文件名

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

public class FileTestDelete {
    public static int n = 1;
	public static void main(String[] args) {
		File file = new File("E:\\codete");
		
		if(file.isDirectory()) {
			File[] files = file.listFiles();
			
			//數組排序,按圖片最後修改的時間排序
			Arrays.sort(files, (f1,f2)-> Long.compare(f1.lastModified(), f2.lastModified()));
			
			for (File f : files) {
				
	            //找到圖片文件,toLowerCase()轉成小寫字母
				if(f.getName().endsWith(".JPG")) {
					
					//圖片改名
					f.renameTo(new File(f.getParent(),(n++)+".jpg"));
				}
								
			}
		}

	}

}

          (4)獲取E:\codete目錄下所有的子文件及子文件目錄名稱,並且按照對應目錄層級進行縮進顯示

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

public class GetFileName {
		
	public  static void  printDir(File file,int hireachy) {
		if(file.isFile()) {
			 printIndent(hireachy);
			 System.out.println("|-->" + file.getName());
		}
		else if(file.isDirectory()) {
			printIndent(hireachy);			
			System.out.println("|-->" + file.getName());
		
			//獲取文件夾中所有的文件
			File[] files = file.listFiles();
			
			//遍歷所有的文件
			for (File f : files) {
				printDir(f,hireachy+1); //遞歸調用
	         }
		}
		else {
			System.out.println("既不是文件,也不是文件夾目錄");				 
		}
		}
	
	public static void printIndent(int hireachy) {
		for(int i=0; i<hireachy; i++) {
			System.out.print("    ");		
		}
	}
	
	public static void main(String[] args) {
		   File dir = new File("E:\\codete");
		   printDir(dir,0);		   			
		}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章