web-dev-qa-db-fra.com

Comment écraser un fichier via Java nio writer?

J'essaie l'écrivain de fichiers comme suit:

String content = "Test File Content";
  • J'ai utilisé comme: Files.write(path, content.getBytes(), StandardOpenOption.CREATE);

Si le fichier n'est pas créé, le fichier est créé et le contenu est écrit. Mais si le fichier est disponible, le contenu du fichier est Test File ContentTest File Content Et si le code est répété, le contenu du fichier est Test File ContentTest File ContentTest File Content ...

  • J'ai utilisé comme: Files.write(path, content.getBytes(), StandardOpenOption.CREATE_NEW);,

Si le fichier n'est pas créé, le fichier est créé et génère une exception comme suit:

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 ...

Comment écraser un fichier via Java nouvelle E/S?

39
cguzel

Vous souhaitez appeler la méthode sans aucun argument OpenOption.

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

Du Javadoc:

Le paramètre options spécifie comment le fichier est créé ou ouvert. Si aucune option n'est présente, cette méthode fonctionne comme si les options CREATE, TRUNCATE_EXISTING et WRITE étaient présentes. En d'autres termes, il ouvre le fichier pour l'écriture, créant le fichier s'il n'existe pas ou tronquant initialement un fichier régulier existant à une taille de 0

64
RamonBoza

Vous souhaitez utiliser à la fois les options StandardOpenOption.TRUNCATE_EXISTING et StandardOpenOption.CREATE:

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