轉(zhuǎn)載
2012年05月23日 11:12:03
String name = "AAAA.txt";
String lujing = "1"+"/"+"2";//定義路徑
File a = new File(lujing,name);
那么,a的意義就是“1/2/AAAA.txt”。
這里a是File,但是File這個類在Java里表示的不只是文件,雖然File在英語里是文件的意思。Java里,F(xiàn)ile至少可以表示文件或文件夾(大概還有可以表示系統(tǒng)設(shè)備什么的,這里不考慮,只考慮文件和文件夾)。
也就是說,在“1/2/AAAA.txt”真正出現(xiàn)在磁盤結(jié)構(gòu)里之前,它既可以表示這個文件,也可以表示這個路徑的文件夾。那么,如果沒有g(shù)etParentFile(),直接執(zhí)行a.mkdirs(),就是說,創(chuàng)建“1/2/AAAA.txt”代表的文件夾,也就是“1/2/AAAA.txt/”,在此之后,執(zhí)行a.createNewFile(),試圖創(chuàng)建a文件,然而以a為名的文件夾已經(jīng)存在了,所以createNewFile()實際是執(zhí)行失敗的。你可以用System.out.println(a.createNewFile())這樣來檢查是不是真正創(chuàng)建文件成功。
所以,這里,你想要創(chuàng)建的是“1/2/AAAA.txt”這個文件。在創(chuàng)建AAAA.txt之前,必須要1/2這個目錄存在。所以,要得到1/2,就要用a.getParentFile(),然后要創(chuàng)建它,也就是a.getParentFile().mkdirs()。在這之后,a作為文件所需要的文件夾大概會存在了(有特殊情況會無法創(chuàng)建的,這里不考慮),就執(zhí)行a.createNewFile()創(chuàng)建a文件。
|