2016-09-13 20 views
0

(これは何度か問題がありましたが、やり方を尋ねることにしました) 私のコードはこれと似ていますが):FileWriterを使って書いた最後の行を削除します。

FileWriter fW = new FileWriter(new File(fileName)); 
while (entries.hasNext()) { 
    fW.write(entry.next()); 
    fW.write("\n"); 
end 

私はJavaでファイルライターを使用しており、ファイルにエントリを書き込んでいます。各エントリの後、私は次の行(各エントリの1行)にスキップします。私は最初に実際にそこにいくつのエントリがあるのか​​分からない。

これで、ファイルの最後に追加の行が表示されます(ただし、入力するエントリはありません)。ファイルライターを使って最後の行を削除する(単純な)方法はありますか?

(この場合、あなたは、whileループの外に最初に書き込むことによって、同様の結果を取得し、順番を入れ替えることができます:

fW.write("\n"); 
fW.write(entry.next()); 

しかし、のようなものがあった場合:

fW.deleteLast() 

は、それが私はそれのようなものを見つけられませんでした)

答えて

0

ループにマイナーチェンジして、次のようにすることができます:

while (entries.hasNext()) { 
    fW.write(entry.next()); 
    fW.write("\n"); 
} 

このようになります。また

while (entries.hasNext()) { 
    fW.write(entry.next()); 
    if(entries.hasNext()) 
     fW.write("\n"); 
} 

while (entries.hasNext()) { 
    fW.write(entry.next()); 
    fW.write("\n"); 
} 

は次のようになります。

if(entries.hasNext()) 
     fW.write(entry.next()); 

while (entries.hasNext()) { 
     fW.write("\n"); 
    fW.write(entry.next()); 
} 
0

の代わりにStringBuilderへのファイルの書き込みに書き込みます。そして、いったん完了すると、StringBuilderから最後の文字を削除し、その内容をファイルに書き出します。コンテンツが大きすぎると(100億メガバイト)、メモリの使用に関する問題があると、短所があります。

関連する問題