web-dev-qa-db-ja.com

Java nio writer経由でファイルを上書きする方法は?

私は次のようにファイルライターを試します:

_String content = "Test File Content";
_
  • 私は次のように使用しました:Files.write(path, content.getBytes(), StandardOpenOption.CREATE);

ファイルが作成されない場合、ファイルが作成され、コンテンツが書き込まれます。ただし、ファイルが使用可能な場合、ファイルの内容は_Test File ContentTest File Content_であり、コードが繰り返し実行される場合、ファイルの内容は_Test File ContentTest File ContentTest File Content_です。

  • 私は次のように使用しました:Files.write(path, content.getBytes(), StandardOpenOption.CREATE_NEW);

ファイルが作成されない場合、ファイルが作成され、次のように例外が発生します。

Java.nio.file.FileAlreadyExistsException:/ home/gyhot/Projects/indexing/ivt_new/target/test-classes/test_file at Sun.nio.fs.UnixException.translateToIOException(UnixException.Java:88)at ...

Java new I/O経由でファイルを上書きする方法は?

39
cguzel

OpenOption引数なしでメソッドを呼び出したい。

Files.write(path, content.getBytes());

Javadocから:

Optionsパラメーターは、ファイルを作成または開く方法を指定します。オプションが存在しない場合、このメソッドはCREATE、TRUNCATE_EXISTING、およびWRITEオプションが存在するかのように機能します。つまり、ファイルを書き込み用に開き、存在しない場合はファイルを作成するか、既存の通常ファイルを最初にサイズ0に切り捨てます

64
RamonBoza

StandardOpenOption.TRUNCATE_EXISTING とStandardOpenOption.CREATEオプションの両方を一緒に使用したい場合:

Files.write(path, content.getBytes(),
         StandardOpenOption.CREATE,
         StandardOpenOption.TRUNCATE_EXISTING );
39
rolfl