Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Revised some text and added a Bibliography.

Although creating a file is generally accomplished with a single method call, it actually has several issues to consider. What should be done if the file cannot be created? What should be done if the file already exists? What should be the file's initial attributes, such as permissions? Java provides a mishmash several generations of file handling facilities.  The original input/output facilities, which included basic file handling, are in the package java.io.  More comprehensive facilities were included in JDK 1.4 with the so called "New I/O" package java.nio (see [Oracle 2010b]). This package introduced a number of methods to handle fine-grained control of file creation.

...

If the file existed before being opened, its former contents will be overwritten with the contents provided by the program.

Noncompliant Code Example (

...

Append)

This noncompliant code example tries to avoid clobbering overwriting an existing file:

Code Block
bgColor#ffcccc
langjava
String filename = // Name of file to write
OutputStream out = new FileOutputStream(filename, true);
// Work with FILE

...

This noncompliant code example tries to avoid altering an existing file by creating an empty file using java.io.File.createNewfile(). If a file with the given name already exists, then File.createNewFile() will return false.

...

This compliant solution uses the java.nio.file.Files.newOutputStream() function method to atomically create the file and throw an exception if the file already exists:

...

The ability to determine if an existing file has been opened or a new file has been created provides greater assurance that a file other than the intended file is not opened or clobbered. overwritten.

Bibliography

...