簡體   English   中英

重新分配后 File.canWrite() 返回 false

[英]File.canWrite() returns false after reassignment

我有一個寫入csv文件的系統。 如果用戶輸入的文件名已經存在,那么它會詢問他們是要覆蓋它還是重命名它。 如果他們選擇覆蓋它,系統就可以正常工作。 然而,當他們選擇重命名它時,他們會收到一個錯誤,因為文件對象的canWrite()方法返回false


String saveName = scanner.next();
File csvFile = Paths.get(saveName + ".csv").toFile();

while (csvFile.exists()) {
    char answer = scanner.next().charAt(0);
    if (answer == 'y') {
        scanner.close();
        break;
    }
    else if (answer == 'n') {
        scanner.close();
        throw new IllegalArgumentException("Error: Rerun program with unique filename.");
    }
    else if (answer == 'r') {
        String response = scanner.next();
        csvFile = Paths.get(response + ".csv").toFile();
    }
}

if (!csvFile.canWrite()) {
    scanner.close();
    throw new IOException("Error: " + csvFile.getPath() + " is not writable.");
}

每當程序進入while循環中的最后一個else-if while ,它都會將csvFile更改為另一個值,然后變為unwritable 如果我從來沒有遇到過else-if語句並且csvFilewhile循環之前的初始聲明保持相同, csvFile可以正常工作。

@Andreas 指出,如果文件不存在,則 canWrite() 返回 false,所以我首先必須調用csvFile.createNewFile()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM