2012-03-11 50 views
16

Tôi muốn tạo tệp trong thư mục mới bằng đường dẫn tương đối. Tạo thư mục "tmp" đủ dễ dàng.Java - Cách tạo tệp trong thư mục bằng Đường dẫn tương đối

Tuy nhiên, khi tôi tạo tệp, tệp này chỉ nằm trong thư mục hiện tại chứ không phải thư mục mới. Dòng mã dưới đây.

File tempfile = new File("tempfile.txt"); 

đã thử điều này cũng:

File tempfile = new File("\\user.dir\\tmp\\tempfile.txt"); 

Rõ ràng tôi là sự hiểu lầm như thế nào phương pháp này hoạt động. giúp đỡ của bạn được đánh giá rất cao.

EDIT: thêm dòng mã hiện đang được sử dụng cũng như mã tôi nghĩ có thể hoạt động cho đường dẫn tương đối để xóa nhầm lẫn.

+1

Đoạn mã trên sử dụng đường dẫn tuyệt đối: '\ user.dir \ tmp \ tempfile.txt'. Tôi không thấy làm thế nào tập tin này có thể được tạo ra trong thư mục hiện hành. Đăng mã có liên quan, giải thích cho chúng tôi những gì bạn mong đợi nó làm, và những gì nó làm thay vào đó. –

+1

* ".. sử dụng đường dẫn tương đối." * Tương đối với cái gì? Ứng dụng? Gói của lớp học? Người quan sát tương đối? Lưu ý rằng a) Đó là một hàm tạo, không phải là một phương thức. b) 'user.dir' sẽ không được tự động mở rộng. c) Lập trình bằng phép thuật hiếm khi hoạt động, hãy thử đọc tài liệu. –

Trả lời

23
File dir = new File("tmp/test"); 
dir.mkdirs(); 
File tmp = new File(dir, "tmp.txt"); 
tmp.createNewFile(); 

BTW: Để thử nghiệm sử dụng @Rule và lớp TemporaryFolder để tạo ra các file tạm hoặc thư mục

+0

Điều đó đã làm được! Cảm ơn, nó đã mất một vài giờ để tìm ra tôi cần hai báo cáo tập tin riêng biệt mới. –

+3

Cũng giống như một người đứng đầu (cho bạn có thể không biết điều này) nhưng Sun, er Oracle, có tài liệu API rất tốt. Một khi bạn tìm hiểu để hiểu và điều hướng chúng, họ có thể là một tiết kiệm thời gian lớn. Ví dụ, giải pháp cho vấn đề cụ thể của bạn có thể đã được tìm ra nếu bạn đã xem xét các hàm tạo khác nhau có sẵn cho người dùng của lớp File: http://docs.oracle.com/javase/6/docs/api/java/io/File.html – claymore1977

4

Bạn có thể tạo đường dẫn tương đối đến một thư mục với các nhà thầu mà phải mất hai đối số: http://docs.oracle.com/javase/6/docs/api/java/io/File.html

Ví dụ:

File tempfile = new File("user.dir/tmp", "tempfile.txt"); 

By the way, dấu chéo ngược "\" có thể được sử dụng chỉ có trên Windows . Trong hầu hết các trường hợp, bạn có thể sử dụng dấu gạch chéo di chuyển "/".

+5

Điều gì đã xảy ra với 'File.separator'? – Manish

+1

* "Trong hầu hết mọi trường hợp, bạn nên sử dụng dấu gạch chéo di chuyển" /"."* Trong *** mọi trường hợp, bạn nên sử dụng hàm tạo 'File' chấp nhận' File' (parent) & 'String '(tên tệp) hoặc sử dụng' System.getProperty ("file.separator") '. –

+0

@Manish Nó phải là tất cả các trường hợp thấp hơn. –

2
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath(); 
System.out.println(routePath); 

/*for finding the path*/ 
String newLine = System.getProperty("line.separator"); 
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(routePath+File.separator+".."+File.separator+"backup.txt"), true)); 
/*file name is backup.txt and this is working.*/ 
0

Hãy nói rằng bạn có "Local-Storage" vào thư mục dự án của bạn và bạn muốn đặt một văn bản hoặc bất kỳ tệp nào sử dụng tệp ghi.

File file = new File(dir,fileName); //KEY IS DIR ex."./local-storage/" and fileName='comp.html' 

     // if file doesnt exists, then create it 
     if (! file.exists()) 
     { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 
     bw.write(text); 
Các vấn đề liên quan