The Files class provides utility methods that are useful for working with the file system.
import java.io.BufferedWriter import java.io.FileWriter import java.nio.file.Files import java.nio.file.Paths private val belchers = "belchers.txt" private fun makeBelcherFile(){ val names = listOf("Bob", "Linda", "Tina", "Gene", "Louise") BufferedWriter(FileWriter(ch9.paths.belchers)).use { writer -> names.forEach { name -> with(writer){ write(name) newLine() } } } } fun main(args : Array<String>){ //Check if the file exists first, and create it if needed if (!Files.exists(Paths.get(belchers))){ makeBelcherFile() } val relativeBeclhers = Paths.get(belchers) val absoluteBelchers = Paths.get(System.getProperty("user.dir"), belchers) //Check if both Paths point to the same file println("Using Files.isSameFile() => " + (Files.isSameFile(relativeBeclhers, absoluteBelchers))) }
Output
Using Files.isSameFile() => true
The program uses Files.exists to see if we have a belchers.txt file on the underlying os. If the method returns false, we call makeBelchersFile() on line 24 to create the file. Lines 26 and 27 create two different Path objects to point at the belchers.txt file.
The relativeBelchers is a Path object created using a relative path to the file. The absoluateBelchers object is created with an aboslute path by combining the current working directory with the name of the file. One line 38, we use the Files.isSameFile and pass both of the Path objects to it. Since both of these Paths point at the same file, it returns True.
Methods
exists(path : Path, varages options : LinkOptions) : Boolean
The exists method is used to test if a file exists or not. We can also pass optional LinkOptions that instructs the method on how to handle symbolic links in the file system. For example, if we don’t want to follow links, then pass NOFOLLOE_LNKS.
isSameFile(path : Path, path2 : Path)
Tests if the both path objects point to the same file. It’s the same as checking if path == path2.