Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Overview

In this quick tutorial, we’re going to look at how to create a file in a specific directory.

We’ll see the difference between absolute and relative file paths, and we’ll use paths that work on several major operating systems.

2. Absolute and Relative File Paths

2.1. Absolute Paths

Let’s start with creating a file in a directory by referring to the entire path, also known as an absolute path. To demonstrate, we’ll use the absolute path to the user temp directory, and add our file into it.

We’re using Files.touch(), which is part of Google Guava, as an easy way to create an empty file:

File tempDirectory = new File(System.getProperty("java.io.tmpdir"));
File fileWithAbsolutePath = new File(tempDirectory.getAbsolutePath() + "/testFile.txt");

assertFalse(fileWithAbsolutePath.exists());

Files.touch(fileWithAbsolutePath);

assertTrue(fileWithAbsolutePath.exists());

2.2. Relative Paths

We can also create a file in a directory that is relative to another directory. For instance, let’s create file in the user temp directory:

File tempDirectory = new File(System.getProperty("java.io.tmpdir"));
File fileWithRelativePath = new File(tempDirectory, "newFile.txt");

assertFalse(fileWithRelativePath.exists());

Files.touch(fileWithRelativePath);

assertTrue(fileWithRelativePath.exists());

In the above example, our new file is added to the path of the user temp directory.

3. Using a Platform Independent File Separator

To construct file paths, we need to use separators like / or \. However, the appropriate separator to use depends upon your operating system. Luckily, there’s an easier way. We can use Java’s File.separator instead of separator characters. As a result, Java picks the appropriate separator for us.

Let’s look at an example of creating a file with this method:

File tempDirectory = new File(System.getProperty("java.io.tmpdir"));
File newFile = new File(tempDirectory.getAbsolutePath() + File.separator + "newFile.txt");

assertFalse(newFile.exists());

Files.touch(newFile);

assertTrue(newFile.exists());

Using File.separator, Java knows how to construct paths based on the underlying filesystem.

4. Conclusion

In this article, we explored the differences between absolute and relative paths and how to create file paths that work on several major operating systems.

As always, the example code is available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.