File utility for creating a new empty file

The java.io.File.createNewFile() method for creating new empty files
reports failure by returning false. To ease proper checking of return
values provide a utility method wrapping createNewFile() throwing
IOException on failure.

Change-Id: I42a3dc9d8ff70af62e84de396e6a740050afa896
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Matthias Sohn 2010-12-30 23:10:55 +01:00
parent 05ca0c49f9
commit c45f2aec56
4 changed files with 40 additions and 0 deletions

View File

@ -175,4 +175,19 @@ public void testMkdirs() throws IOException {
assertTrue(f.delete());
}
public void testCreateNewFile() throws IOException {
File f = new File(trash, "x");
FileUtils.createNewFile(f);
assertTrue(f.exists());
try {
FileUtils.createNewFile(f);
fail("creation of already existing file must fail");
} catch (IOException e) {
// expected
}
FileUtils.delete(f);
}
}

View File

@ -130,6 +130,7 @@ couldNotWriteFile=Could not write file {0}
countingObjects=Counting objects
createBranchFailedUnknownReason=Create branch failed for unknown reason
createBranchUnexpectedResult=Create branch returned unexpected result {0}
createNewFileFailed=Could not create new file {0}
credentialPassword=Password
credentialUsername=Username
daemonAlreadyRunning=Daemon already running

View File

@ -190,6 +190,7 @@ public static JGitText get() {
/***/ public String countingObjects;
/***/ public String createBranchFailedUnknownReason;
/***/ public String createBranchUnexpectedResult;
/***/ public String createNewFileFailed;
/***/ public String credentialPassword;
/***/ public String credentialUsername;
/***/ public String daemonAlreadyRunning;

View File

@ -47,6 +47,7 @@
import java.io.File;
import java.io.IOException;
import java.nio.channels.FileLock;
import java.text.MessageFormat;
import org.eclipse.jgit.JGitText;
@ -219,4 +220,26 @@ public static void mkdirs(final File d, boolean skipExisting)
JGitText.get().mkDirsFailed, d.getAbsolutePath()));
}
}
/**
* Atomically creates a new, empty file named by this abstract pathname if
* and only if a file with this name does not yet exist. The check for the
* existence of the file and the creation of the file if it does not exist
* are a single operation that is atomic with respect to all other
* filesystem activities that might affect the file.
* <p>
* Note: this method should not be used for file-locking, as the resulting
* protocol cannot be made to work reliably. The {@link FileLock} facility
* should be used instead.
*
* @param f
* the file to be created
* @throws IOException
* if the named file already exists or if an I/O error occurred
*/
public static void createNewFile(File f) throws IOException {
if (!f.createNewFile())
throw new IOException(MessageFormat.format(
JGitText.get().createNewFileFailed, f));
}
}