我需要编写一个程序,我在其中运行一组指令并在目录中创建一个文件。一旦创建了文件,当再次运行相同的代码块时,它不应该运行相同的指令集,因为它之前已经执行过,此处文件用作保护。
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
中的指令集并创建文件,并且在第一次运行后,第二次运行它应该从文件存在。
问题是我不理解new File
,以及何时创建文件?我应该使用file.CreateNewFile
吗?另外,如何使用case
?
答案 0 :(得分:7)
重要的是要理解java.io.File不是文件系统上的物理文件,而是路径名的表示 - 根据javadoc:“文件和目录路径名的抽象表示”< / em>的。所以new File(...)
与创建实际文件无关 - 您只是定义一个路径名,它可能与现有文件对应也可能不对应。
要创建空文件,您可以使用:
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。
编辑:我最初没有考虑过的一件事:我将“创建文件”理解为“创建一个空文件”;但是如果你打算在文件中写一些 ,你通常不需要先创建一个空文件。