我需要编写一个程序,在其中运行一组指令并在目录中创建一个文件.创建文件后,当再次运行相同的代码块时,它不应运行相同的指令集,因为它之前已经执行过,此处文件用作保护程序.
var Directory: String = "Dir1" var dir: File = new File("Directory"); dir.mkdir(); var FileName: String = Directory + File.separator + "samplefile" + ".log" val FileObj: File = new File(FileName) if(!FileObj.exists()) // blahblah else { // set of instructions to create the file }
当程序最初运行时,文件将不存在,因此它应该在else中运行指令集并且还创建文件,并且在第一次运行之后,第二次运行它应该退出,因为文件存在.
问题是我不了解新文件,以及何时创建文件?我应该使用file.CreateNewFile吗?另外,如何用功能样式写这个用例?
解决方法
重要的是要理解
java.io.File不是文件系统上的物理文件,而是路径名的表示 – 根据javadoc:“文件和目录路径名的抽象表示”.因此,新文件(…)与创建实际文件无关 – 您只需定义路径名,该路径名可能与现有文件对应,也可能不对应.
要创建空文件,您可以使用:
val file = new File("filepath/filename") file.createNewFile();
如果在JRE 7或更高版本上运行,您可以使用新的java.nio.file API:
val path = Paths.get("filepath/filename") Files.createFile(path)
如果您对默认IO API不满意,可以考虑许多替代方案.我所知道的Scala特定的是:
或者您可以使用Java世界中的库,例如Google Guava或Apache Commons IO.
编辑:我最初没有考虑过的一件事:我理解“创建一个文件”为“创建一个空文件”;但如果您打算在文件中立即写入内容,则通常不需要先创建空文件.