如何在功能样式中创建文件和操作?

时间:2014-10-05 20:29:38

标签: scala

我需要编写一个程序,我在其中运行一组指令并在目录中创建一个文件。一旦创建了文件,当再次运行相同的代码块时,它不应该运行相同的指令集,因为它之前已经执行过,此处文件用作保护。

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

以功能样式编写它

1 个答案:

答案 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 GuavaApache Commons IO

编辑:我最初没有考虑过的一件事:我将“创建文件”理解为“创建一个空文件”;但是如果你打算在文件中写一些 ,你通常不需要先创建一个空文件。