2010-07-20 26 views
9

Tôi đang phát triển cho nền tảng Android.
Ứng dụng của tôi tạo ra một tập tin tạm thời với một cuộc gọi đơn giản để:Xóa các tệp được tạo bằng FileOutputStream

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode); 

Nó hoạt động tốt vì tôi có thể viết thư cho nó và đọc nó bình thường.

Vấn đề là khi tôi thoát khỏi ứng dụng tôi muốn xóa tệp này. Tôi đã sử dụng:

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT"); 
f.delete() 

Nhưng nó luôn trả về sai và tệp không bị xóa.
Tôi đã thử:

File f = new File("MY_TEMP.TXT"); 
f.delete(); 

Và nó cũng không hoạt động.

Trả lời

10

Tôi đã kiểm tra bài đăng này và cách tốt nhất để xóa tệp được tạo từ FileOutputStream là một cuộc gọi đơn giản từ phương thức Xóa ngữ cảnh deleteFile (TEMP_FILE) đơn giản như vậy.

+0

Đúng vậy! Nó cực kỳ đơn giản! chỉ cần gọi hàm deleteFile (TEMP_FILE); Nó chuyển trực tiếp đến thư mục được gán cho cấu hình và nó có thể di chuyển theo tài liệu. Nó hoạt động cho nhu cầu của tôi. Wow Tôi đã hoàn toàn đi sai đường! Dù sao, cảm ơn tất cả các bạn đã chỉ cho tôi theo đúng hướng. –

+0

Vâng, đó là cách thực sự nhanh nhất để xóa tệp được tạo bằng FileOutputStream – anticafe

7

Bạn không thể xóa tệp đã mở. Bạn cần đóng luồng trước khi xóa.

fos.close(); 
f.delete(); 

Điều đó nói rằng, tôi thà sử dụng File#createTempFile() để cho các nền tảng cơ bản làm công việc dọn dẹp tự động và để tránh rắc rối tiềm năng di động gây ra bằng cách sử dụng đường dẫn tương đối trong File.

+1

Từ tài liệu của 'createTempFile':" Phương thức này chỉ cung cấp một phần của một cơ sở tệp tạm thời. Để sắp xếp tệp được xóa theo phương pháp này tự động, hãy sử dụng phương thức 'deleteOnExit()'. " – Powerlord

+0

R. Bemrose: Một hệ điều hành phong nha định kỳ dọn dẹp thư mục tạm thời. – BalusC

+1

@ BalusC: Đó là một sự xấu hổ Windows không phải là một hệ điều hành tốt. ;) Và tôi không thể nói cho Android về cách nó sẽ xử lý điều đó. – Powerlord

0

Kiểm tra kỹ, nếu Luồng đã đóng trước khi bạn tìm cách xóa tệp.

0

Bạn đã có một số câu trả lời chắc chắn rồi, nhưng tôi chỉ muốn đề cập đến File.deleteOnExit() để lên lịch xóa tệp khi VM thoát.

--edit--

Bạn vẫn nên đóng mọi luồng được kết nối với tệp.

+0

Điều đó sẽ không hoạt động khi bạn không đóng tệp. – BalusC

+0

Tôi không nói điều đó sẽ xảy ra. Chỉ cần một cách khác để xóa các tập tin :) – willcodejavaforfood

1

bạn cần đóng tệp trước khi xóa. sử dụng mã dưới đây.

 FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode); 
     File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT"); 
     fos.close(); 
     File f = new File("MY_TEMP.TXT"); 
     f.delete(); 
Các vấn đề liên quan