package com.atguigu.java3;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.Date;
/**
* File類的使用
*
* 1. File類的一個對象,代表一個文件或一個文件目錄(俗稱:文件夾)
* 2. File類聲明在java.io包下
* 3. File類中涉及到關於文件或文件目錄的創建、刪除、重命名、修改時間、文件大小等方法,
* 並未涉及到寫入或讀取文件內容的操作。如果需要讀取或寫入文件內容,必須使用IO流來完成。
* 4. 後續File類的對象常會作爲參數傳遞到流的構造器中,指明讀取或寫入的"終點".
*
*/
public class FileTest {
/*
1.如何創建File類的實例
File(String filePath)
File(String parentPath,String childPath)
File(File parentFile,String childPath)
2.
相對路徑:相較於某個路徑下,指明的路徑。
絕對路徑:包含盤符在內的文件或文件目錄的路徑
3.路徑分隔符
windows:\\
unix:/
*/
@Test
public void test1(){
//構造器1
File file1 = new File("hello.txt");//相對於當前module
File file2 = new File("D:\\workspace_idea1\\JavaSenior\\day08\\he.txt");
System.out.println(file1);
System.out.println(file2);
//構造器2:
File file3 = new File("D:\\workspace_idea1","JavaSenior");
System.out.println(file3);
//構造器3:
File file4 = new File(file3,"hi.txt");
System.out.println(file4);
}
/*
public String getAbsolutePath():獲取絕對路徑
public String getPath() :獲取路徑
public String getName() :獲取名稱
public String getParent():獲取上層文件目錄路徑。若無,返回null
public long length() :獲取文件長度(即:字節數)。不能獲取目錄的長度。
public long lastModified() :獲取最後一次的修改時間,毫秒值
如下的兩個方法適用於文件目錄:
public String[] list() :獲取指定目錄下的所有文件或者文件目錄的名稱數組
public File[] listFiles() :獲取指定目錄下的所有文件或者文件目錄的File數組
*/
@Test
public 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());
}
@Test
public 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不能在硬盤中存在。
*/
@Test
public void test4(){
File file1 = new File("hello.txt");
File file2 = new File("D:\\io\\hi.txt");
boolean renameTo = file2.renameTo(file1);
System.out.println(renameTo);
}
/*
public boolean isDirectory():判斷是否是文件目錄
public boolean isFile() :判斷是否是文件
public boolean exists() :判斷是否存在
public boolean canRead() :判斷是否可讀
public boolean canWrite() :判斷是否可寫
public boolean isHidden() :判斷是否隱藏
*/
@Test
public void test5(){
File file1 = new File("hello.txt");
file1 = new File("hello1.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
File file2 = new File("d:\\io");
file2 = new File("d:\\io1");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());
}
/*
創建硬盤中對應的文件或文件目錄
public boolean createNewFile() :創建文件。若文件存在,則不創建,返回false
public boolean mkdir() :創建文件目錄。如果此文件目錄存在,就不創建了。如果此文件目錄的上層目錄不存在,也不創建。
public boolean mkdirs() :創建文件目錄。如果此文件目錄存在,就不創建了。如果上層文件目錄不存在,一併創建
刪除磁盤中的文件或文件目錄
public boolean delete():刪除文件或者文件夾
刪除注意事項:Java中的刪除不走回收站。
*/
@Test
public void test6() throws IOException {
File file1 = new File("hi.txt");
if(!file1.exists()){
//文件的創建
file1.createNewFile();
System.out.println("創建成功");
}else{//文件存在
file1.delete();
System.out.println("刪除成功");
}
}
@Test
public void test7(){
//文件目錄的創建
File file1 = new File("d:\\io\\io1\\io3");
boolean mkdir = file1.mkdir();
if(mkdir){
System.out.println("創建成功1");
}
File file2 = new File("d:\\io\\io1\\io4");
boolean mkdir1 = file2.mkdirs();
if(mkdir1){
System.out.println("創建成功2");
}
//要想刪除成功,io4文件目錄下不能有子目錄或文件
File file3 = new File("D:\\io\\io1\\io4");
file3 = new File("D:\\io\\io1");
System.out.println(file3.delete());
}
}