【问题标题】:Create a new file everytime, even if the file exists每次创建一个新文件,即使该文件存在
【发布时间】:2016-10-19 14:40:52
【问题描述】:

我的项目需要更改特定文件内容。每次执行代码时,无论文件是否存在,我都需要创建一个新的。如果文件存在,则应删除原始文件的内容,文件中应仅存在新的/新的内容。

注意:每次执行时文件名和文件位置都相同。

代码:

Spring.xml:

<bean id=".." class="ImageDataProcess">
    <constructor-arg ref="x.y.z.filepath.newImageDataFilepath" />
    <other constructor args>
</bean>

<bean id="x.y.z.filepath.newImageDataFilepath">
     <constructor-arg value="#{tmpDirectoryPath}/image-data.txt" />
</bean>

ImageDataProcess.java:

@RequiredArgsConstructor
public class ImageDataProcess implements PQR {
  private final String newImageDataTextFilepath;
  //other values coming from spring
      @Override
      public void execute() {
          File f = new File(newImageDataTextFilepath);
          ://logic here
          :
       Forloop(){
          FileUtils.writeStringToFile(f, imageDataFileLine + NEWLINE, true);
        }
    }
}

但这只是将新内容附加到旧文件中。 截至目前,如果我背靠背运行两次迭代,文件大小将变成以前的两倍,但我希望它相同,即使数据相同。 有谁知道我怎样才能做到这一点??

【问题讨论】:

  • 快速查看 api 可能会有所帮助。检查你在那里经过什么以及我导致了什么。提示:这些参数之一告诉程序追加或不追加。作为另一个侧节点:following the FileUtils Api the call you are doing is depreceated
  • 检查它是否存在,是否删除并重新创建?您甚至可以存储旧数据临时文件以防万一您出于任何原因需要它。
  • @Kevin:是的,我知道这是为了追加。但它在 for 循环内,所以我需要在那里追加。在 forloop 开始之前,我想要一个新的同名空文件。
  • 字面意思是完全相同的问题,实际上,相同的代码,不同的名称。我们是在帮助别人做作业还是其他什么?

标签: java spring file spring-mvc


【解决方案1】:
FileUtils.writeStringToFile(f, imageDataFileLine + NEWLINE, true);

您需要在此处删除布尔值“true”。这指定附加到文件而不是覆盖。

我已经链接到api中的具体方法。

更新:您也可以在写入文件之前将其删除。如果需要追加。

FileUtils.forceDelete(file);

【讨论】:

  • 是的,我知道它是用于追加的。但它在 for 循环内,所以我需要在那里追加。在 forloop 开始之前,我想要一个具有相同名称的新空文件。
  • 现在有什么可能的解决方案?
  • 可以先删除文件再写入。然后,如果您只在循环中编写,它将在第一次迭代时为您创建一个新文件。我已经更新了答案以反映这一点。
  • 嘿,我找到了一种方法。使用 Printwriter 类。但是测试用例没有通过。如果可以的话,请帮忙。我在这里发布了问题:stackoverflow.com/questions/40173392/…
【解决方案2】:

如果只使用你传递给方法的变量呢?用false初始化即可,第一次写操作后设置为true

boolean append = false;
File f = new File(path);
...
for(...){
    FileUtils.writeStringToFile(f, imageDataFileLine + NEWLINE, append);
    if(!append) append = true;
}

【讨论】:

  • 嘿.. 是的,这可以工作。我对此表示怀疑,如果我的文件最初有 10 行,那么要写入文件的新内容只有 6 行。最终文件会有最后 4 行吗? [仅供参考:我不想要这 4 行]。
  • 嘿,我找到了一种方法。使用 Printwriter 类。但是测试用例没有通过。如果可以的话,请帮忙。我在这里发布了问题:stackoverflow.com/questions/40173392/…
猜你喜欢
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2019-01-12
相关资源
最近更新 更多