1025. 除數博弈(C++)
阿新 • • 發佈:2020-09-15
1.1.pathSeparator 、separator
/* static String pathSeparator 與系統有關的路徑分隔符,為了方便,它被表示為一個字串。 static char pathSeparatorChar 與系統有關的路徑分隔符。 static String separator 與系統有關的預設名稱分隔符,為了方便,它被表示為一個字串。 static char separatorChar 與系統有關的預設名稱分隔符。 操作路徑:路徑不能寫死了 C:\develop\a\a.txt windows C:/develop/a/a.txt linux "C:"+File.separator+"develop"+File.separator+"a"+File.separator+"a.txt" */ String pathSeparator = File.pathSeparator; System.out.println(pathSeparator);//路徑分隔符 windows:分號; linux:冒號: String separator = File.separator; System.out.println(separator);// 檔名稱分隔符 windows:反斜槓\ linux:正斜槓/
1.2.File類的構造方法
- publicFile(Stringpathname) :通過將給定的路徑名字串轉換為抽象路徑名來建立新的 File例項。
- publicFile(Stringparent,Stringchild) :從父路徑名字串和子路徑名字串建立新的 File例項。
- publicFile(Fileparent,Stringchild) :從父抽象路徑名和子路徑名字串建立新的 File例項。
import java.io.File; /* 路徑: 絕對路徑:是一個完整的路徑 以碟符(c:,D:)開始的路徑 c:\\a.txt C:\\Users\itcast\\IdeaProjects\\shungyuan\\123.txt D:\\demo\\b.txt 相對路徑:是一個簡化的路徑 相對指的是相對於當前專案的根目錄(C:\\Users\itcast\\IdeaProjects\\shungyuan) 如果使用當前專案的根目錄,路徑可以簡化書寫 C:\\Users\itcast\\IdeaProjects\\shungyuan\\123.txt-->簡化為: 123.txt(可以省略專案的根目錄) 注意: 1.路徑是不區分大小寫 2.路徑中的檔名稱分隔符windows使用反斜槓,反斜槓是轉義字元,兩個反斜槓代表一個普通的反斜槓 */ public class Demo02File { public static void main(String[] args) { /* File類的構造方法 */ //show02("c:\\","a.txt");//c:\a.txt //show02("d:\\","a.txt");//d:\a.txt show03(); File f = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan"); long length = f.length(); System.out.println(length); } /* File(File parent, String child) 根據 parent 抽象路徑名和 child 路徑名字串建立一個新 File 例項。 引數:把路徑分成了兩部分 File parent:父路徑 String child:子路徑 好處: 父路徑和子路徑,可以單獨書寫,使用起來非常靈活;父路徑和子路徑都可以變化 父路徑是File型別,可以使用File的方法對路徑進行一些操作,再使用路徑建立物件 */ private static void show03() { File parent = new File("c:\\"); File file = new File(parent,"hello.java"); System.out.println(file);//c:\hello.java } /* File(String parent, String child) 根據 parent 路徑名字串和 child 路徑名字串建立一個新 File 例項。 引數:把路徑分成了兩部分 String parent:父路徑 String child:子路徑 好處: 父路徑和子路徑,可以單獨書寫,使用起來非常靈活;父路徑和子路徑都可以變化 */ private static void show02(String parent, String child) { File file = new File(parent,child); System.out.println(file);//c:\a.txt } /* File(String pathname) 通過將給定路徑名字串轉換為抽象路徑名來建立一個新 File 例項。 引數: String pathname:字串的路徑名稱 路徑可以是以檔案結尾,也可以是以資料夾結尾 路徑可以是相對路徑,也可以是絕對路徑 路徑可以是存在,也可以是不存在 建立File物件,只是把字串路徑封裝為File物件,不考慮路徑的真假情況 */ private static void show01() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt"); System.out.println(f1);//重寫了Object類的toString方法 C:\Users\itcast\IdeaProjects\shungyuan\a.txt File f2 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan"); System.out.println(f2);//C:\Users\itcast\IdeaProjects\shungyuan File f3 = new File("b.txt"); System.out.println(f3);//b.txt } }
1.3.getAbsolutePath、
publicStringgetAbsolutePath() :返回此File的絕對路徑名字串。
publicStringgetPath() :將此File轉換為路徑名字串。
publicStringgetName() :返回由此File表示的檔案或目錄的名稱。
publiclonglength() :返回由此File表示的檔案的長度。
絕對路徑和相對路徑
絕對路徑:從碟符開始的路徑,這是一個完整的路徑。
相對路徑:相對於專案目錄的路徑,這是一個便捷的路徑,開發中經常使用。
/* File類獲取功能的方法 - public String getAbsolutePath() :返回此File的絕對路徑名字串。 - public String getPath() :將此File轉換為路徑名字串。 - public String getName() :返回由此File表示的檔案或目錄的名稱。 - public long length() :返回由此File表示的檔案的長度。 */ public class Demo03File { public static void main(String[] args) { show04(); } /* public long length() :返回由此File表示的檔案的長度。 獲取的是構造方法指定的檔案的大小,以位元組為單位 注意: 資料夾是沒有大小概念的,不能獲取資料夾的大小 如果構造方法中給出的路徑不存在,那麼length方法返回0 */ private static void show04() { File f1 = new File("C:\\develop\\a\\1.jpg"); long l1 = f1.length(); System.out.println(l1);//780831位元組 File f2 = new File("C:\\develop\\a\\2.jpg"); System.out.println(f2.length());//0 File f3 = new File("C:\\develop\\a"); System.out.println(f3.length());//0 資料夾沒有大小概念的 } /* public String getName() :返回由此File表示的檔案或目錄的名稱。 獲取的就是構造方法傳遞路徑的結尾部分(檔案/資料夾) */ private static void show03() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt"); String name1 = f1.getName(); System.out.println(name1);//a.txt File f2 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan"); String name2 = f2.getName(); System.out.println(name2);//shungyuan } /* public String getPath() :將此File轉換為路徑名字串。 獲取的構造方法中傳遞的路徑 toString方法呼叫的就是getPath方法 原始碼: public String toString() { return getPath(); } */ private static void show02() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt"); File f2 = new File("a.txt"); String path1 = f1.getPath(); System.out.println(path1);//C:\Users\itcast\IdeaProjects\shungyuan\a.txt String path2 = f2.getPath(); System.out.println(path2);//a.txt System.out.println(f1);//C:\Users\itcast\IdeaProjects\shungyuan\a.txt System.out.println(f1.toString());//C:\Users\itcast\IdeaProjects\shungyuan\a.txt } /* public String getAbsolutePath() :返回此File的絕對路徑名字串。 獲取的構造方法中傳遞的路徑 無論路徑是絕對的還是相對的,getAbsolutePath方法返回的都是絕對路徑 */ private static void show01() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt"); String absolutePath1 = f1.getAbsolutePath(); System.out.println(absolutePath1);//C:\Users\itcast\IdeaProjects\shungyuan\a.txt File f2 = new File("a.txt"); String absolutePath2 = f2.getAbsolutePath(); System.out.println(absolutePath2);//C:\Users\itcast\IdeaProjects\shungyuan\a.txt } }
1.4.判斷功能的方法
publicbooleanexists() :此File表示的檔案或目錄是否實際存在。
publicbooleanisDirectory() :此File表示的是否為目錄。
publicbooleanisFile() :此File表示的是否為檔案。
import java.io.File; /* File類判斷功能的方法 - public boolean exists() :此File表示的檔案或目錄是否實際存在。 - public boolean isDirectory() :此File表示的是否為目錄。 - public boolean isFile() :此File表示的是否為檔案。 */ public class Demo04File { public static void main(String[] args) { show02(); } /* public boolean isDirectory() :此File表示的是否為目錄。 用於判斷構造方法中給定的路徑是否以資料夾結尾 是:true 否:false public boolean isFile() :此File表示的是否為檔案。 用於判斷構造方法中給定的路徑是否以檔案結尾 是:true 否:false 注意: 電腦的硬碟中只有檔案/資料夾,兩個方法是互斥 這兩個方法使用前提,路徑必須是存在的,否則都返回false */ private static void show02() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shung"); //不存在,就沒有必要獲取 if(f1.exists()){ System.out.println(f1.isDirectory()); System.out.println(f1.isFile()); } File f2 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan"); if(f2.exists()){ System.out.println(f2.isDirectory());//true System.out.println(f2.isFile());//false } File f3 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\shungyuan.iml"); if(f3.exists()){ System.out.println(f3.isDirectory());//false System.out.println(f3.isFile());//true } } /* public boolean exists() :此File表示的檔案或目錄是否實際存在。 用於判斷構造方法中的路徑是否存在 存在:true 不存在:false */ private static void show01() { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan"); System.out.println(f1.exists());//true File f2 = new File("C:\\Users\\itcast\\IdeaProjects\\shung"); System.out.println(f2.exists());//false File f3 = new File("shungyuan.iml");//相對路徑 C:\Users\itcast\IdeaProjects\shungyuan\shungyuan.iml System.out.println(f3.exists());//true File f4 = new File("a.txt"); System.out.println(f4.exists());//false } }
1.5.建立刪除功能的方法
publicbooleancreateNewFile() :當且僅當具有該名稱的檔案尚不存在時,建立一個新的空檔案。
publicbooleandelete() :刪除由此File表示的檔案或目錄。
publicbooleanmkdir() :建立由此File表示的目錄。
publicbooleanmkdirs() :建立由此File表示的目錄,包括任何必需但不存在的父目錄。
import java.io.File; import java.io.IOException; /* File類建立刪除功能的方法 - public boolean createNewFile() :當且僅當具有該名稱的檔案尚不存在時,建立一個新的空檔案。 - public boolean delete() :刪除由此File表示的檔案或目錄。 - public boolean mkdir() :建立由此File表示的目錄。 - public boolean mkdirs() :建立由此File表示的目錄,包括任何必需但不存在的父目錄。 */ public class Demo05File { public static void main(String[] args) throws IOException { show03(); } /* public boolean delete() :刪除由此File表示的檔案或目錄。 此方法,可以刪除構造方法路徑中給出的檔案/資料夾 返回值:布林值 true:檔案/資料夾刪除成功,返回true false:資料夾中有內容,不會刪除返回false;構造方法中路徑不存在false 注意: delete方法是直接在硬碟刪除檔案/資料夾,不走回收站,刪除要謹慎 */ private static void show03() { File f1 = new File("08_FileAndRecursion\\新建資料夾"); boolean b1 = f1.delete(); System.out.println("b1:"+b1); File f2 = new File("08_FileAndRecursion\\abc.txt"); System.out.println(f2.delete()); } /* public boolean mkdir() :建立單級空資料夾 public boolean mkdirs() :既可以建立單級空資料夾,也可以建立多級資料夾 建立資料夾的路徑和名稱在構造方法中給出(構造方法的引數) 返回值:布林值 true:資料夾不存在,建立資料夾,返回true false:資料夾存在,不會建立,返回false;構造方法中給出的路徑不存在返回false 注意: 1.此方法只能建立資料夾,不能建立檔案 */ private static void show02() { File f1 = new File("08_FileAndRecursion\\aaa"); boolean b1 = f1.mkdir(); System.out.println("b1:"+b1); File f2 = new File("08_FileAndRecursion\\111\\222\\333\\444"); boolean b2 = f2.mkdirs(); System.out.println("b2:"+b2); File f3 = new File("08_FileAndRecursion\\abc.txt"); boolean b3 = f3.mkdirs();//看型別,是一個檔案 System.out.println("b3:"+b3); File f4 = new File("08_F\\ccc"); boolean b4 = f4.mkdirs();//不會丟擲異常,路徑不存在,不會建立 System.out.println("b4:"+b4); } /* public boolean createNewFile() :當且僅當具有該名稱的檔案尚不存在時,建立一個新的空檔案。 建立檔案的路徑和名稱在構造方法中給出(構造方法的引數) 返回值:布林值 true:檔案不存在,建立檔案,返回true false:檔案存在,不會建立,返回false 注意: 1.此方法只能建立檔案,不能建立資料夾 2.建立檔案的路徑必須存在,否則會丟擲異常 public boolean createNewFile() throws IOException createNewFile宣告丟擲了IOException,我們呼叫這個方法,就必須的處理這個異常,要麼throws,要麼trycatch */ private static void show01() throws IOException { File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion\\1.txt"); boolean b1 = f1.createNewFile(); System.out.println("b1:"+b1); File f2 = new File("08_FileAndRecursion\\2.txt"); System.out.println(f2.createNewFile()); File f3 = new File("08_FileAndRecursion\\新建資料夾"); System.out.println(f3.createNewFile());//不要被名稱迷糊,要看型別 File f4 = new File("08_FileAndRecursi\\3.txt"); System.out.println(f4.createNewFile());//路徑不存在,丟擲IOException } }
1.6.File類遍歷(資料夾)目錄功能
import java.io.File; /* File類遍歷(資料夾)目錄功能 - public String[] list() :返回一個String陣列,表示該File目錄中的所有子檔案或目錄。 - public File[] listFiles() :返回一個File陣列,表示該File目錄中的所有的子檔案或目錄。 注意: list方法和listFiles方法遍歷的是構造方法中給出的目錄 如果構造方法中給出的目錄的路徑不存在,會丟擲空指標異常 如果構造方法中給出的路徑不是一個目錄,也會丟擲空指標異常 */ public class Demo06File { public static void main(String[] args) { show02(); } /* public File[] listFiles() :返回一個File陣列,表示該File目錄中的所有的子檔案或目錄。 遍歷構造方法中給出的目錄,會獲取目錄中所有的檔案/資料夾,把檔案/資料夾封裝為File物件,多個File物件儲存到File陣列中 */ private static void show02() { File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion"); File[] files = file.listFiles(); for (File f : files) { System.out.println(f); } } /* public String[] list() :返回一個String陣列,表示該File目錄中的所有子檔案或目錄。 遍歷構造方法中給出的目錄,會獲取目錄中所有檔案/資料夾的名稱,把獲取到的多個名稱儲存到一個String型別的陣列中 */ private static void show01() { //File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion\\1.txt");//NullPointerException //File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_Fi");//NullPointerException File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion"); String[] arr = file.list(); for (String fileName : arr) { System.out.println(fileName); } } }