我创建了一个java应用程序,它将文件从在线源下载到运行Windows 7的本地计算机
代码下载文件,但也为该文件创建路径,以便将其存储在该路径中
然后该文件将转换为另一种格式
我遇到的问题是,如果我使用绝对长路径导航到路径,那么Windows似乎不喜欢它
我正在使用cmd导航到该文件,这意味着我正在创建进程来执行该操作
我的代码看起来像这样
String[] command =
{
"cmd",
};
Process p;
try {
p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdOut = new PrintWriter(p.getOutputStream(), true);
stdOut.println("cd "+strPath);
如上所示,最后一行只是导航到路径 它适用于大多数情况,但不适用于路径很长且有“ - ”和其他字符的情况。
如果我在Windows资源管理器上,我单击导航栏上的路径,路径显示但是如果我在这段代码中嵌入'〜'路径,则将strPath设置为带有'〜'的路径工作正常
此外,如果我从strPath获取绝对完整路径(例如通过将其打印到屏幕)并打开cmd.exe,则运行以下命令
cd <some absolute full path> <- this works but doesn't work from java
所以我不确定我需要做些什么来解决它
答案 0 :(得分:2)
您不能(并且您不能)将~
用于主文件夹(即shell扩展)。您可以使用System.getProperty("user.home")
- 这将返回主文件夹。