2012-03-08 38 views

Trả lời

202

Nó sẽ ném một FileNotFoundException nếu tập tin không tồn tại và không thể được tạo ra (doc), nhưng nó sẽ tạo ra nó nếu nó có thể. Để chắc chắn bạn có lẽ nên thử nghiệm đầu tiên mà các tập tin tồn tại trước khi bạn tạo FileOutputStream (và tạo với createNewFile() nếu nó không):

File yourFile = new File("score.txt"); 
yourFile.createNewFile(); // if file already exists will do nothing 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 
+2

nếu tệp không tồn tại, làm cách nào để tạo tệp .txt trống? –

+2

@StefanDunn với phương thức 'createNewFile()', như trong ví dụ của tôi. – talnicolas

+48

Điều kiện là dư thừa. Theo [JavaDoc] (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#createNewFile%28%29), 'createNewFile()' tự kiểm tra nguyên tử sự tồn tại của tập tin. – aztek

16
File f = new File("Test.txt"); 
if(!f.exists()) 
    f.createNewFile(); 

đèo f này để xây dựng FileOutputStream của bạn.

+0

điều này đã tạo tệp nếu nó không được tìm thấy, cảm ơn bạn. –

+0

Câu trả lời hay nhất tại đây. +1. – m4heshd

1

Bạn có thể có khả năng nhận được FileNotFoundException nếu tệp không tồn tại.

tài liệu Java nói:

hay không một tập tin có sẵn hoặc có thể được tạo ra phụ thuộc vào nền tảng cơ bản http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

Nếu bạn đang sử dụng Java 7 bạn có thể sử dụng gói java.nio:

Tham số tùy chọn chỉ định cách tệp được tạo hoặc mở ... nó mở tập tin để viết, tạo ra các tập tin nếu nó không tồn tại ...

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

21

Bạn có thể tạo một tập tin rỗng dù nó tồn tại hay không ...

new FileOutputStream("score.txt", false).close(); 

nếu bạn muốn để tệp nếu nó tồn tại ...

new FileOutputStream("score.txt", true).close(); 

Bạn sẽ chỉ nhận được một FileNotFoundException nếu bạn cố gắng tạo ra fi le trong một thư mục không tồn tại.

+1

Nó ném 'FileNotFoundException' trong cả hai trường hợp. – mixel

20

Trước khi tạo tệp, cần tạo tất cả thư mục mẹ.

Sử dụng yourFile.getParentFile().mkdirs()

11

FileUtils từ commons apache là một cách khá tốt để đạt được điều này trong một dòng đơn.

FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt") 

Điều này sẽ tạo thư mục mẹ nếu không tồn tại và tạo tệp nếu không tồn tại và ném ngoại lệ nếu đối tượng tệp là thư mục hoặc không thể ghi vào. Đây là tương đương với:

File file = new File("/home/nikhil/somedir/file.txt"); 
file.getParentFile().mkdirs(); // Will create parent directories if not exists 
file.createNewFile(); 
FileOutputStream s = new FileOutputStream(file,false); 

Tất cả các hoạt động trên sẽ ném một ngoại lệ nếu người dùng hiện tại không được phép làm phẫu thuật.

2

Tạo tệp nếu không tồn tại.Nếu tệp thoát, hãy xóa nội dung của tệp:

/** 
* Create file if not exist. 
* 
* @param path For example: "D:\foo.xml" 
*/ 
public static void createFile(String path) { 
    try { 
     File file = new File(path); 
     if (!file.exists()) { 
      file.createNewFile(); 
     } else { 
      FileOutputStream writer = new FileOutputStream(path); 
      writer.write(("").getBytes()); 
      writer.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

Chỉ cần tạo cách khác để tạo tệp nếu không tồn tại bằng Đường dẫn và tệp.

Path path = Paths.get("Some/path/filename.txt"); 
Files.createDirectories(path.getParent()); 
if(!Files.exists(path)) 
    Files.createFile(path); 
Files.write(path, ("").getBytes()); 
Các vấn đề liên quan