2012-06-18 41 views
5

Tôi cần xóa nội dung của tệp, trước khi tôi viết thêm thông tin vào tệp. Tôi đã thử các cách khác nhau, chẳng hạn như nơi tôi xóa nội dung nhưng tệp vẫn ở cùng kích thước và khi tôi bắt đầu viết nó sau khi xóa, một lỗ trống dường như là kích thước của việc xóa trước khi dữ liệu mới của tôi được ghi .Xóa nội dung tệp android

Đây là những gì tôi đã cố gắng ...

BufferedWriter bw; 
try { 
    bw = new BufferedWriter(new FileWriter(path)); 
    bw.write(""); 
    bw.close(); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

Và tôi cũng đã cố gắng này ...

File f = new File(file); 
FileWriter fw; 

try { 
    fw = new FileWriter(f,false); 
    fw.write(""); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

Có thể ai đó hãy giúp tôi với một giải pháp cho vấn đề này.

+0

Có thể bạn không chỉ cần xóa các tập tin và tạo một sản phẩm nào mới không? – Dalmas

+0

Không, tôi cần phải là cùng một tệp nhưng cảm ơn câu trả lời của bạn – kassy

Trả lời

0

Hãy thử gọi flush() trước khi gọi close().

FileWriter writer = null; 

try { 
    writer = ... // initialize a writer 
    writer.write(""); 
    writer.flush(); // flush the stream 
} catch (IOException e) { 
    // do something with exception 
} finally { 
    if (writer != null) { 
     writer.close(); 
    } 
} 
+0

Tôi đã thử nhưng vẫn như cũ. Tôi không hiểu. Cảm ơn bạn đã trả lời – kassy

9
FileWriter (path, false) 

Các sai sẽ cho các nhà văn để cắt file thay vì phụ thêm với nó.

+0

Vâng, đó là những gì tôi muốn vì tôi muốn xóa nội dung của tệp. – kassy

+0

Xin lỗi, không thấy thông báo sai trong đoạn mã thứ hai ở đó. – mbwasi

0

Có thể là do bạn không đóng FileWriter, fw.close(); bạn cũng không cần phải "xóa" dữ liệu cũ, chỉ cần bắt đầu viết và nó sẽ ghi đè dữ liệu cũ. Vì vậy, hãy chắc chắn rằng bạn đang đóng cửa ở khắp mọi nơi.

này làm việc cho tôi:

File f=new File(file); 
    FileWriter fw; 
    try { 
     fw = new FileWriter(f); 
     fw.write(""); 
     fw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }