JRE 6,在Windows XP上.
使用不同构造函数实例化两个File对象会导致该File.exists()方法的结果不一致.
免责声明:以下代码是摘要,而不是实际代码.我根本不相信这是一个File.separator问题.我首先要求得到早期反应,以防我错过了一个很好理解的问题.现在看来,重置系统属性是导致此问题的原因之一.下面的代码现在可以重现并且可以按原样使用.您可以复制/粘贴Java类并尝试它,它应该与我列出的结果一致. user.dir
建立:
创建文件夹架构C:\toto\tmp\sub.
从任何不包含tmp/sub子文件夹体系结构的文件夹中启动以下类.
码:
public class TestFileExists {
public static void main(String[] args) {
System.setProperty("user.dir", "C:\\toto\\");
File root = new File("tmp");
File sub_a = new File(root, "sub");
File sub_b = new File(root.getAbsolutePath()+"/sub");
System.out.println("sub_a path ? "+sub_a.getAbsolutePath());
System.out.println("sub_a exists ? "+sub_a.exists());
System.out.println("sub_b path ? "+sub_b.getAbsolutePath());
System.out.println("sub_b exists ? "+sub_b.exists());
System.out.println("Path equals ? "+ (sub_a.getAbsolutePath().equals(sub_b.getAbsolutePath())));
System.out.println("Obj equals ? "+ (sub_a.equals(sub_b)));
}
}
Run Code Online (Sandbox Code Playgroud)
结果: …
我正在尝试cd在 Rust 中复制该命令,仅供学习。
但问题是我不确定如何更改操作系统 (*nix) 中的目录。我试过:
std::process::Command::new("cd")
.arg(path) //path is a String
.spawn()
.expect("Directory failed");
Run Code Online (Sandbox Code Playgroud)
还尝试了:
let path = Path::new(path_str.as_str());
let changed_dir = env::set_current_dir(&path).is_ok();
Run Code Online (Sandbox Code Playgroud)
并且changed_dir是真的。
即使我尝试改变,env::set_var("PWD", path)但似乎没有任何效果。
我检查了这部分文档:https : //doc.rust-lang.org/std/env/fn.set_current_dir.html 但我认为仅适用于一种沙盒路径或目录。
还有更多想法吗?
有没有办法在命令提示符下打开命令提示符和更改目录,并使用java在同一命令提示符中运行批处理文件.
我知道如何使用java打开命令提示符.谢谢,
我需要从JSP执行linux命令.它工作正常.但是我需要通过JSP在linux的特定目录中启动一些sh文件.说/home/username/something/start.sh
try{
String command= "cd /home/username/something";
Runtime.getRuntime().exec(command);
Runtime.getRuntime().exec("./start.sh")
out.println("Child");
}
catch(Exception e)
{ out.println("Error");
}
Run Code Online (Sandbox Code Playgroud)
它说FIle或目录未找到.
我试过Runtime.getRuntime().exec("pwd"),它显示的东西像"java.lang.UNIXProcess@fc9d2b"!! :o
我需要更改pwd并通过jsp执行一些命令.我怎样才能做到这一点??任何帮助,将不胜感激.