[英]Trouble with creating a new folder in Windows using Java
已建立事實:應用程序不需要與平台無關。
我一直坐在這里一段時間,我不知道為什么這會給我帶來如此多的問題。 我想要做的是:
1)檢查文件是否存在
2)如果它不存在,創建它然后讓我知道
3)如果它確實存在,不要試圖寫它,只是什么也不做,讓我知道
String pathToChange = "C:/Program Files/WOTA".replace("/", "\\");
JOptionPane.showMessageDialog(rootPane, pathToChange);
File file = new File(pathToChange);
if (!file.exists()) {
file.mkdirs();
if (file.mkdir()) {JOptionPane.showMessageDialog(rootPane, "C:/Program Files/WOTA was created."); }
else { JOptionPane.showMessageDialog(rootPane, "Did not create.");
}
}
我不知道為什么但這給了我很多麻煩,但確實如此。 哦,你會注意到我正在彈出一個JOptionPanel(Dialog),其中包含它正在嘗試創建的文件名,以便我知道傳遞的內容是正確的。
任何人都可以指出為什么這不起作用以及我需要做些什么來使它工作。 更重要的是,既然我是一個驕傲的私生子,我不喜歡別人為我工作,請告訴我為什么它不起作用。
順便說一句,我正在NetBeans中構建所有這些。
謝謝!
行file.mkdirs(); 將創建您嘗試創建的文件夾。 然后在if(file.mkdir())語句中,它嘗試再次創建該文件。 編寫代碼的方式,您將始終獲得“未創建”但仍應顯示該文件夾。
File#mkdirs
將自行返回false
。
更好的方法可能是使用更像......
if (!file.exists() && !file.mkdirs()) {
// Can not make the directory
} else {
// Directories exists or was created
}
在Windows 7,UAC和更新的安全模型下,您可能無法寫入磁盤上的某些位置,包括Program Files
(我們在工作中遇到過這個問題:P)。
更糟糕的是,在Java 6下, File#canWrite
可以返回false
(即,當您無法寫入指定位置時返回true
)。 我們發現的真正奇怪的事情是你甚至可以嘗試寫一個文件,它會引發異常......
我們過去所做的是使用File#canWrite
,如果返回true
,我們實際上將文件寫入指定的位置,檢查它是否存在並檢查文件的內容。
如果這樣可行,那么我們才會相信結果。
據我了解,這可能已在Java 7中得到修復...謝謝Windows:P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.