gpt4 book ai didi

java - 执行非 native MacOS 终端命令 - 截断以创建新文件 - 在 Java 代码中

转载 作者:太空宇宙 更新时间:2023-11-04 09:35:24 24 4
gpt4 key购买 nike

我已经遵循了几个问题的答案,但似乎仍然无法在代码中使用截断方法创建文件,就像我可以在终端中一样。

我从实际运行的代码中没有收到任何错误,这很奇怪。

我想要实现的目标:

鉴于我已将 CD 刻录到桌面:

truncate -s 10M ./files/myFile.txt

像这样使用截断应该在文件目录中创建一个名为“myFile.txt”的新文件,文件大小为 10mb。

我的代码

我假设终端命令将从源代码运行,因此我必须包含目录的完整路径

    String homeDir = System.getProperty("user.home");
String fileDir = "/Desktop/files/";
String fileName = "myFile.txt";
String fullPath = homeDir + fileDir + fileName;

try {
String[] cmd = {"sh", "-c", "truncate", "-s", "10M", fullPath};
Process process = Runtime.getRuntime().exec(cmd);
} catch (IOException ioe) {
fail("something went wrong: " + ioe);
}

正如我上面提到的,运行代码时没有错误。但是该文件根本没有显示在我的系统中。

最佳答案

解决方案来自与用户 @l'L'l 的反复讨论。

由于 truncate 是非 native MacOS 终端命令,因此需要包含其安装位置的完整路径。

which terminal

给了我

/usr/local/bin/truncate

然后我可以在原始代码中添加它来代替 truncate

此外,由于不使用任何其他关键字或简写来执行截断,因此我不需要包含 sh-c

最终的process代码是:

String fullPath = "/Users/username/Desktop/files/myFile.txt
String[] cmd = {"/usr/local/bin/truncate", "-s", "10M", fullPath};
Process process = Runtime.getRuntime().exec(cmd);

所有字符串片段也可以提取到它们自己的变量中:

String truncate = "/usr/local/bin/truncate";
String fileSize = "10M"

为了便于阅读:

String[] cmd = {truncate, "-s",  fileSize,  fullPath};

关于java - 执行非 native MacOS 终端命令 - 截断以创建新文件 - 在 Java 代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56575580/

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