1. 首先明確一點的是:test.txt文件可以和test文件夾同時存在同一目錄下;test文件不能和test文件夾同時存在同一目錄下。
原因是:
(1)win的文件和文件夾都是以節點形式存放,這就意味着相同的文件和文件名不能處在同一目錄下,會命名沖突。
(2)文件后綴名也算是文件名的一部分,即test.txt文件和test文件不是相同文件名的文件。
2. 基於以上原因,如果我想在d:創建一個test文件夾,但是d:下面有一個test文件,那么由於命名沖突,是不可能創建成功的。
所以,在創建之前,要通過file.exists()判斷是否存在test命名的文件或者文件夾,如果返回true,是不能創建的;
然后再通過file.isDirectory()來判斷這是不是一個文件夾。
1 import java.io.File; 2 import java.io.IOException; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 8 File file = new File("d:\\test_file.txt"); 9 Main.judeFileExists(file); 10 11 File dir = new File("d:\\test_dir"); 12 Main.judeDirExists(dir); 13 } 14 15 // 判斷文件是否存在 16 public static void judeFileExists(File file) { 17 18 if (file.exists()) { 19 System.out.println("file exists"); 20 } else { 21 System.out.println("file not exists, create it ..."); 22 try { 23 file.createNewFile(); 24 } catch (IOException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } 28 } 29 30 } 31 32 // 判斷文件夾是否存在 33 public static void judeDirExists(File file) { 34 35 if (file.exists()) { 36 if (file.isDirectory()) { 37 System.out.println("dir exists"); 38 } else { 39 System.out.println("the same name file exists, can not create dir"); 40 } 41 } else { 42 System.out.println("dir not exists, create it ..."); 43 file.mkdir(); 44 } 45 46 } 47 48 }