2017-05-04 129 views
0

任何人都可以解释为什么此代码不会工作吗?为什么它不在给定的目的地创建文件?相反,它只是输出groupId而不是创建语句。无法在给定列表中的特定文件夹中创建文件

任何帮助或指导将不胜感激。

 List<String> groupList = userGroupAuthor.getPredefinedGroupList(); 
     String groupId; 

     for (String groupName : groupList) { 
      groupId = StringHelper.makeGroupId(groupName); 
      System.out.println(groupId); 
      //writeGroupName(groupId, groupName); 
      File f = new File(testScriptName); 
      try{ 
       boolean fvar = f.createNewFile(); 
       if(fvar){ 
        System.out.println("File Created"); 
       }else { 

        System.out.println("Not Created"); 
       } 
      }   

      //bw = new BufferedWriter(new FileWriter(f)); 
    catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
} 
+0

这与C有什么关系? –

回答

0

如果我的理解这个问题,这就是为什么相同的文件名testScriptName是导致每次运行一个“未创建”消息。

JavaDoc for File.createNewFile状态:

原子地创建由此抽象路径名命名当且仅当这个名称的文件尚不存在的新的空文件。如果文件不存在,则检查文件是否存在以及是否创建该文件,这是一个针对可能影响文件的所有其他文件系统活动的原子操作。 [着重点]

由于在循环内部使用了相同的文件名,如果文件已经存在,它会在第一次运行后失败。

要解决这种情况,可以将文件创建移到循环之外,或者为每个组使用唯一的文件名。代码中没有提供足够的逻辑来确定意图。

相关问题