gpt4 book ai didi

java - ProcessBuilder删除并重命名

转载 作者:行者123 更新时间:2023-12-01 23:44:23 25 4
gpt4 key购买 nike

我有一个 ProcessBuilder,它应该删除 File.txt,然后重命名 NewFile.txt。问题是两个文件都被删除了。知道为什么以及如何解决吗?

public class MyProcessBuilder {

public static void main(String[] args){
final ArrayList<String> command = new ArrayList<String>();

// CREATE FILES
File file = new File("File.txt");
File newFile = new File("NewFile.txt");
try{
if(!file.exists())
file.createNewFile();
if(!newFile.exists())
newFile.createNewFile();
} catch(Exception e){}

// force remove File.txt
command.add("rm");
command.add("-f");
command.add("File.txt");

// rename NewFile.txt to File.txt
command.add("mv");
command.add("NewFile.txt");
command.add("File.txt");

final ProcessBuilder builder = new ProcessBuilder(command);
try {
builder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}

最佳答案

问题是您正在运行一个命令,即

rm -f File.txt mv NewFile.txt File.txt

这将无条件删除名为 File.txtmvNewFile.txt 的文件。

您想将其拆分为两个单独的命令。

更好的是,使用 File.delete()File.renameTo() 。这不仅会给您更多的控制权,而且还会使您的代码更加可移植。

关于java - ProcessBuilder删除并重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com