每次创建一个新文件,即使该文件存在

时间:2016-10-19 14:40:53

标签: java spring file spring-mvc

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

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

代码:

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);
        }
    }
}

但这只是在旧文件中附加新内容。 截至目前,如果我背靠背运行两次迭代,文件大小将变为之前的两倍,但我希望它是相同的,即使数据相同。 谁知道我怎么能实现这个?

2 个答案:

答案 0 :(得分:0)

FileUtils.writeStringToFile(f, imageDataFileLine + NEWLINE, true);

你需要删除布尔值&#34; true&#34;这里。这指定附加到文件而不是覆盖。

我已与api中的具体方法相关联。

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

FileUtils.forceDelete(file);

答案 1 :(得分:0)

使用传递给方法的变量怎么样?只需使用false初始化它,并在第一次写入操作后将其设置为true

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