使用java

时间:2017-05-24 01:20:45

标签: java windows cmd process printwriter

我创建了一个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 

所以我不确定我需要做些什么来解决它

1 个答案:

答案 0 :(得分:2)

您不能(并且您不能)将~用于主文件夹(即shell扩展)。您可以使用System.getProperty("user.home") - 这将返回主文件夹。