2012-05-09 26 views
5

Tôi có đoạn code sauĐặt phần mở rộng tập tin ban đầu khi đang lưu file

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
File f = choose.showSaveDialog(stage);

Nhưng sau khi nhấp vào nút Save trong hộp thoại tính năng chọn, tập tin được tạo ra là ở định dạng tập tin, nhưng không phải trong .txt, làm thế nào để sửa lỗi này?

Trả lời

10

Tôi gặp vấn đề tương tự khi sử dụng JavaFX 2.2. Tôi đang sử dụng workaround sau:

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
File f = choose.showSaveDialog(stage); 
if(!f.getName().contains(".")) { 
    f = new File(f.getAbsolutePath() + ".txt"); 
} 
+3

Hack này không hoàn thành, FileChooser kiểm tra sự tồn tại của tệp và wanrs nếu nó tồn tại trong nội bộ và tất cả những gì sẽ được thực hiện mà không có phần mở rộng, nó sẽ kiểm tra tên tệp sai. –

6

Đối với tôi nó làm việc tốt nhất, để

FileChooser choose = new FileChooser(); 
choose.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text doc(*.txt)", "*.txt")); 
choose.setInitialFileName("*.txt"); 
File file = choose.showSaveDialog(stage); 
if (file != null) { 
    if (file.getName().endsWith(".txt")) { 
    // do the operation with the file (i used a builder) 
    } else { 
    throw new Exception(file.getName() + " has no valid file-extension."); 
    } 
} 

Vấn đề thay thế các phần mở rộng bằng tay như thế:

if(!f.getName().contains(".")) { 
    f = new File(f.getAbsolutePath() + ".txt"); 
} 

là, có một tệp không có phần mở rộng có thể không tồn tại, nhưng nếu tệp tồn tại với phần mở rộng, nó sẽ bị ghi đè mà không có bất kỳ cảnh báo nào. hành vi không mong đợi.

Các vấn đề liên quan