2012-12-11 25 views
1

这可能是一个非常基本的问题中创建的,但我尝试了各种选项和它没有工作,所以请求帮助。我想在指定的目录内创建一个文件。如果文件已经存在,我想将数据附加到它。下面是我的尝试:斯卡拉/爪哇 - 文件没有指定目录

var DirectoryName: String = "LogFiles" 
    var dir: File = new File(DirectoryName); 
    dir.mkdir(); 

    var ActorID: String = "1" 
    var FileName: String = DirectoryName + File.separator + "Actor_" + ActorID + ".log" 
    val FileObj: File = new File(FileName) 

// FileObj.getParentFile().mkdirs(); 
// FileObj.createNewFile(); 

    var FileWriterObj: FileWriter = null 
    var FileExistsFlag = 0 

    if (!FileObj.exists()) 
    {  
    FileWriterObj = new FileWriter(FileObj.getName()) 
    } 
    else 
    { 
     FileWriterObj = new FileWriter(FileObj.getName(), true) 
     FileExistsFlag = 1 
    } 

    var writer = new PrintWriter(FileWriterObj) 

    if(FileExistsFlag == 0) 
     writer.write("new file") 
    else 
    writer.append("appending to old file") 

互联网搜索要求使用以下:

FileObj.getParentFile().mkdirs(); 
FileObj.createNewFile(); 

但它创建的目录内空的文件和目录之外创建新文件,追加到它。而且很少有文章表明不需要使用createNewFile()来创建文件。

我试图给多种不同的路径格式,如下面:

var DirectoryName: String = "../LogFiles" 
var DirectoryName: String = "/home/ms/Desktop/Project/LogFiles" 

但它仍然不会创建目录内的文件。 你能指点我失踪的东西吗?

操作系统:Ubuntu的12.04

回答

3

您应该使用FileObj.getAbsolutePath,而不是FileObj.getName。 getName只是返回文件的名称,这解释了为什么它始终放在当前目录中。

的空文件问题可以通过调用writer.close()在你的函数的末尾来解决。我不认为有必要使用createNewFile