2011-08-09 7 views
65

ファイル 'A'の内容をファイル 'B'にコピーしたいと思います。 コピーした後、ファイル 'A'の内容を消去して、最初から書きたいと思っています。 ファイル 'A'は他のタスクに関連しているため、削除できません。削除することなくテキストファイルの内容を削除する方法

javaのファイルAPI(readLine())を使用してコンテンツをコピーできましたが、ファイルの内容をクリアしてファイルポインタをファイルの先頭に設定する方法はわかりません。

答えて

99

を空の文字列を記述するために、再度開いているファイルをAからBにコピーした後

FileOutputStream writer = new FileOutputStream("file.txt"); 
writer.write(("").getBytes()); 
writer.close(); 
+14

書き込みは不要で、別のタスクでファイルが開いている場合でも開くことはできません。 – EJP

+0

writer.close ??、2017年です!!!また、テキストは上書きされるので、印刷する必要はありません(0125)。 – FSm

+1

@Andro、タイムスタンプとタグに気付いていますか?当時は、Android搭載デバイス間でファイルを空にする最も信頼性の高い方法だと思いました。 – Vlad

2

ファイルに空の文字列を書き込み、フラッシュして閉じます。ファイルライターが追加モードでないことを確認してください。私はそのトリックを行うべきだと思います。

13

シンプルで、何も書いてはいけません!

PrintWriter writer = new PrintWriter(file); 
writer.print(""); 
writer.close(); 
+2

-1:java.lang.Stringではどちらも6も7で、toByteArray()メソッドを持っていないhttp://docs.oracle.com/javase/6/docs/api/java/lang /文字列。 –

+0

長い間存在しています。http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#getBytes() – kmas

+1

ここでの書き込みは不要です。 – EJP

4

クラスRandomAccessFileのsetLength()メソッド

25

あなたが欲しい:モードを書き込み、その後、単にファイルに空の文字列を印刷し、それに

+4

これは、ファイルを削除しないため、実際は唯一正しい答えです。他のすべての答えがあります。 – EJP

+0

[logback-android](https://github.com/tony19/logback-android)ライブラリで作成されたログファイルをクリアしたいので、これが必要です。私がログファイルを手動で削除した場合、ライブラリを賢く作成することはできません。私のアプリを再起動するまでログを書き込む必要があります。したがって、私はこの方法を使って作業しました。私はあまり勉強していません。それは最善のアプローチではありませんか?ご意見をお聞かせください。 – Yeung

+0

funnily、Intensoカードクラス10が.apkファイルからインストールされたアプリケーションのfileOnSdCard.setLength(0)を呼び出すと、バッテリーがリセットされて強制的に停止するため、生産上の問題が発生します。彼らのクラス4カードはこの問題を決して示してこなかった。 – Poutrathor

-2

あなたは(その遅すぎるが、以下のコードは/他人をお手伝いをします)

public static FileInputStream getFile(File fileImport) throws IOException { 
     FileInputStream fileStream = null; 
    try { 
     PrintWriter writer = new PrintWriter(fileImport); 
     writer.print(StringUtils.EMPTY); 
     fileStream = new FileInputStream(fileImport); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } finally { 
      writer.close(); 
     } 
     return fileStream; 
} 
+4

空のファイルは作成されません。空のファイルが1つ作成されます。 – EJP

2

などの一般的な方法を書くことができるだけで書く:

FileOutputStream writer = new FileOutputStream("file.txt"); 
48

は、私はあなたがさえに持って信じていません空の文字列をファイルに書き出します。 Javaのための最高の仲間の

PrintWriter pw = new PrintWriter("filepath.txt"); pw.close();

+8

あなたはそれについて正しいです。書き込みを示すすべての回答が間違っているか、または最高で冗長です。 – EJP

+15

'new PrintWriter(" filepath.txt ")はどうでしょうか?close();'? – Supuhstar

+1

java docsからの引用「ファイルが存在する場合は、サイズゼロに切り捨てられます」 – BrettG

3

一つApache Projectsあり、それを参照してください。ファイル関連の操作については、Commons IOプロジェクトを参照してください。

以下の行のコードは、ファイルを空にするのに役立ちます。

FileUtils.write(new File("/your/file/path"), "") 
0

あなたは

FileWriter fw = new FileWriter(/*your file path*/); 
PrintWriter pw = new PrintWriter(fw); 
pw.write(""); 
pw.flush(); 
pw.close(); 

追記が可能になりますしてFileWriterコンストラクタで真

FileWriter fw = new FileWriter(/*your file path*/,true); 

を使用しないように注意してください使用することができます。あなたが使用する必要がない場合https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html

3

作家の後でそれを行うための最短できれいな方法はこうなるでしょう:

new FileWriter("/path/to/your/file.txt").close(); 
2

ワンライナー:どの程度以下

1

:Javaドキュメントで利用可能

FileChannel.open(Paths.get("/home/user/file/to/truncate")).truncate(0).close(); 

詳細情報:切り捨て操作を行うための

File temp = new File("<your file name>"); 
if (temp.exists()) { 
    RandomAccessFile raf = new RandomAccessFile(temp, "rw"); 
    raf.setLength(0); 
} 
0
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE); 
FileWriter fw = new FileWriter(fos.getFD()); 
fw.write(""); 
+0

こんにちは、あなたのコードを読みやすくするために{}を使用することができます –

+0

ようこそ!コードを読みやすくするために、組み込みの書式設定ツールを使用してください。 –

関連する問題