Java IO之File類

注:本文主要記錄自 《兄弟連_馬劍威_JAVA基礎_212_IO之File類》

1、File類的基本概念

  • 表示文件和目錄路徑名的抽象表示形式(File既表示文件也表示文件目錄)
  • File類可以實現文件的創建、刪除、重命名、得到路徑、創建時間等,是唯一與文件有關的操作類。
File類的定義:
  • public class File
  • extends Object
  • implements Serializable ,Compareable<File>

2、File類的操作方法
public static final String separator          :表示路徑分隔符“\”
public static final String pathSeparator   :表示路徑分隔,表示“;”
public File(String pathname)                  :構造File類實例,要傳入路徑
public boolean createNewFile() throws IOException      創建新文件
public boolean delete()                           :刪除文件
public String getParent()                        :得到文件的上一級路徑
public boolean isDirectory()                    :判斷給定的路徑是否是文件夾

eg:
/**
 * File類的使用
 */
public class FileDemo { 

	public static void main(String[] args) {
		//File.separator : On UNIX systems the value of this field is '/'; on Microsoft Windows systems it is '\\'
		File file=new File("E:"+File.separator+"FileDemo"+File.separator+"filetest.txt");
		System.out.println(file.getAbsolutePath());
		if (file.exists()) {
			System.out.println("file exists");
		}else {
			System.out.println("file not exists");
			//創建文件
			try {<span style="white-space:pre">	</span>File dir=file.getParentFile();dir.mkdirs();//創建父目錄文件夾
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//刪除文件
		//file.delete();
		//得到文件的上一級路徑
		System.out.println("file.getParent(): "+file.getParent());
		//判斷一個路徑是否是文件夾
		System.out.println("是否是文件夾: "+file.isDirectory());
		//判斷一個路徑是否是文件
		System.out.println("是否是文件: "+file.isFile());
		
	}

}

public boolean isFile()      判斷給定的路徑是否是文件
public String[] list()       列出文件夾中的文件,文件名String
public File[] listFiles()     列出文件夾中的所有文件
public boolean mkdir()   創建新的文件夾
public Boolean renameTo(File file)    爲文件重命名
public long length()     返回文件大小
String getPath()    路徑名字符串



辨析:

1、File.mkdir() 與 File.mkdirs()

public boolean mkdir() {} :Creates the directory named by this file, assuming(假設) its parents exist. Use {@link #mkdirs} if you also want to create missing parents.
即:
mkdir的創建 需要他的父文件夾必須存在
mkdirs的創建 如果父文件夾不存在的話 也會順便創建父文件夾

比如 /storage/emulated/0/DCIM/Camera 這個路徑
如果你手機沒有DCIM這個文件夾 你要去創建Camera這個文件夾 就必須用第二種方式創建

2、File.getParent() 與 File.getParentFile()
 /**
* Returns the pathname of the parent of this file. This is the path up to
* but not including the last name. {@code null} is returned if there is no
* parent.
* @return this file's parent pathname or {@code null}.
*/
public String getParent() {}

/**
* Returns a new file made from the pathname of the parent of this file.
* This is the path up to but not including the last name. {@code null} is
* returned when there is no parent.
*
* @return a new file representing this file's parent or {@code null}.
*/
public File getParentFile() {}
所以主要在與返回值類型的不同
getParent() 返回的是父目錄的路徑,爲字符串類型
getParentFile() 返回的是通過 父目錄路徑生成的 file文件,爲 file 類型

eg:
在E盤的 FileTest 文件夾下 存在文件 filetest.txt
public class FileDemo {
    public static void main(String[] args) {
        File f=new File("E:/FileTest/filetest.txt");//或者 File file=new File("E:\\FileTest\\filetest.txt");
        String parent =f.getParent();
        System.out.println("getParent: "+parent);
        File f1=f.getParentFile();
        String path = f1.getAbsolutePath();
        System.out.println(path);
    }
}
輸出:
getParent: E:\FileTest
E:\FileTest

3、File.exists() 測試
同2,在E盤的 FileTest 文件夾下 存在文件 filetest.txt
public class FileDemo {
    public static void main(String[] args) {
        File f=new File("E:/FileTest/filetest.txt");//或者 File file=new File("E:\\FileTest\\filetest.txt");
        if (f.exists()){
            System.out.println("文件存在");
        }
        File f2= new File("E:/FileTest/filetest2.txt");
        if (f2.exists()){
            System.out.println("文件存在");
        }else{
            System.out.println("文件不存在");
        }
    }
}
輸出:
文件存在
文件不存在
思考:
File f2= new File("E:/FileTest/filetest2.txt"); 
在 filetest2.txt 文件未存在的情況下,File f2= new File("E:/FileTest/filetest2.txt"); 並未真正創建文件
當調用createNewFile方法時纔會真正在該路徑下創建文件
f2.createNewFile();






發佈了59 篇原創文章 · 獲贊 23 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章