我的项目需要更改特定的文件内容。无论文件是否存在,我都需要在每次执行代码时创建一个新的。如果文件存在,则应删除原始文件的内容,并且文件中只应包含新/新内容。
注意:每次执行时文件名和文件位置都相同。
代码:
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);
}
}
}
但这只是在旧文件中附加新内容。 截至目前,如果我背靠背运行两次迭代,文件大小将变为之前的两倍,但我希望它是相同的,即使数据相同。 谁知道我怎么能实现这个?
答案 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;
}