操作本地文件?
一、文件的創建、刪除和重命名
File file = new File("/bin/hello.txt");//文件無法被創建,系統找不到指定的路徑
file.createNewFile();
File file = new File("bin/hello.txt");
file.createNewFile();
File file = new File("../hello.txt");//在當前目錄的上一層目錄創建文件
file.createNewFile();
File file = new File("../../hello.txt");//在當前目錄的上一層目錄創建文件
file.createNewFile();
file.exists()
File nameto = new File("Hello.txt");
file.renameTo(nameto);//重命名文件
重命名文件,達到了移動文件的效果,跨目錄時,要求源和目的必須處于同一個分區
另外如果目標的重命名文件已經存在,重命名操作也會失敗的
文件處于不同的分區,需要使用文件的copy,而不是重命名
File nameto = new File("src/new Hello.txt");
file.renameTo(nameto);//重命名文件
//文件
file.isFile();
//路徑(文件夾)
file.isDirectory();
file.delete();//刪除文件
二、文件夾的創建、刪除和重命名
File folder1 = new File("my new folder");
File folder2 = new File("my new folder/one/two/three/main");
mkdirDemo(folder1);
mkdirsDemo(folder2);
File newfolder = new File("my new folder-new");
renameFolder(folder1, newfolder);
File newfolder2 = new File("my new folder/one/2/three/main");
renameFolder(folder2, newfolder2);//重命名失敗,被重命名的文件夾在構造函數中,必須是多級目錄的最后一個子目錄
File newfolder3 = new File("my new folder/one/2");
renameFolder(folder2, newfolder3);//重命名失敗,被重命名的文件夾在構造函數中,必須是多級目錄的最后一個子目錄
//必須處于同一個分區,另外如果目標的重命名文件夾已經存在,重命名操作也會失敗的
File folderSrc = new File("my new folder/one/two/three");
File folderDest = new File("my new folder/one/three");
if(folderSrc.renameTo(folderDest)){
System.out.println("done");
}else {
System.out.println("fail");
}
File folder4 = new File("my new folder/one/two");//必須是空文件夾才可以刪除,如果包含了其他文件或文件夾,那么刪除失敗
if(folder4.delete()){
System.out.println("done");
}else {
System.out.println("delete fail");
}
}
//創建單個目錄,文件夾如果已經存在的話則會報錯,創建失敗.
private static void mkdirDemo(File folder) {
if(folder.mkdir()){
System.out.println("文件夾創建完成");
}else{
if(folder.exists()){
System.out.println("文件夾已經存在不用創建.");
}else {
System.out.println("文件夾創建失敗");
}
}
/**
* 創建多級目錄,當然參數如果是一級目錄,就只會創建一級目錄
* 文件夾如果已經存在的話也不會報錯,已經存在的話就不創建
* @param folder2
*/
private static void mkdirsDemo(File folder2) {
if(folder2.mkdirs()){
System.out.println("文件夾創建完成!");
}
}
/**
* 重命名文件夾
* @param srcFolder
* @param destFolder
*/
private static void renameFolder(File srcFolder, File destFolder) {
if(srcFolder.renameTo(destFolder)){
System.out.println("重命名完成");
}else {
System.out.println("重命名失敗");
}
}
三、讀取文件的屬性
File file = new File("text.txt");
//判斷文件是否存在
System.out.println(file.exists());
//讀取文件名稱,只跟構造函數中的名稱有關,和文件是否存在無關
System.out.println(file.getName());
//讀取文件路徑,相對路徑
System.out.println(file.getPath());
//讀取文件路徑,絕對路徑,從磁盤的根目錄開始算的
System.out.println(file.getAbsolutePath());
//讀取文件的父級路徑
System.out.println(file.getParent());//結果為null,因為file對應的路徑是text.txt(構造函數).
System.out.println(new File(file.getAbsolutePath()).getParent());
//讀取文件的大小,單位是字節
System.out.println(file.length()/1000 + "KB");//硬盤上單位進制是1000而不是1024
//判斷文件是否是隱藏文件
//在linux下,以點開頭的文件就是隱藏文件,在windows下,右鍵設定文件的隱藏屬性
System.out.println(file.isHidden());
//判斷文件是否可讀
System.out.println(file.canRead());
//判斷文件是否可寫
System.out.println(file.canWrite());
//判斷文件是否是文件夾
System.out.println(file.isDirectory());
四、設置文件的屬性
//將文件設置為可寫
file.setWritable(true);
//將文件設置為不可寫
file.setWritable(false);
//將文件設置為可讀
file.setReadable(true);
//將文件設置成不可讀不可寫
file.setReadable(false);
file.setWritable(false);
//將文件設置為只讀
file.setReadOnly();