在java程序开发中,有用到getRuntime().exec()调用copy、xcopy命令,其中碰到一些问题,记录如下:
1.用getRuntime().exec()调用copy:
java.lang.Runtime.getRuntime().exec("cmd.exe /c copy C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc C:\\cubeETL_TEST\\cog\\publish1\\231.mdc");
以上的写法经测试是可以正确copy的。
在写程序的过程中,先碰到的是这样一种情况,写法如下:
java.lang.Runtime.getRuntime().exec("cmd.exe /c copy C:/cubeETL_TEST/cog/buildDir/231.mdc C:/cubeETL_TEST/cog/publish1/231.mdc");
与上面一种写法的差别就是文件路径中是使用“\”还是“/”,在windows 2000系统上测试的结果是,路径写成C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc,则能正确copy文件;若写成C:/cubeETL_TEST/cog/buildDir/231.mdc,程序也能运行,且不报任何错误,但是文件却没有copy成功。
2.使用getRuntime().exec()调用copy时,若直接写成:
java.lang.Runtime.getRuntime().exec("copy C:\\cubeETL_TEST\\cog\\buildDir\\231.mdc C:\\cubeETL_TEST\\cog\\publish1\\231.mdc");
程序运行时会产生异常信息:
java.io.IOException: CreateProcess: copy C:\cubeETL_TEST\cog\buildDir\231.mdc C:\cubeETL_TEST\cog\publish1\231.mdc error=2
3.用getRuntime().exec()调用xcopy:
可以正确执行的写法如下:
java.lang.Runtime.getRuntime().exec("cmd.exe /c xcopy C:\\cubeETL_TEST\\cog\\buildDir\\231 C:\\cubeETL_TEST\\cog\\publish1\\231\\");
文件夹层次说明:
buildDir下存在文件夹231,publish1下不存在文件夹231.
首先说明这么写的含义:是将buildDir下的文件夹231拷贝到文件夹publish1下。
首先要注意的是因为文件夹publish1下原没有文件夹231(若有,那就又变成相当于调用copy命令拷贝文件了),所以在写源目录、目标目录时需注意:
源目录路径后面不要带“\”,而目标路径后面需要带“\”。这样文件夹231(文件及子文件夹)就能正确复制到publish1文件夹下。
如果写成这样的格式:
java.lang.Runtime.getRuntime().exec("cmd.exe /c xcopy C:\\cubeETL_TEST\\cog\\buildDir\\231 C:\\cubeETL_TEST\\cog\\publish1\\231");
在java程序中运行后,程序无错误提示,但是文件夹不能正确拷贝;直接在cmd中执行这样的命令:
xcopy C:\cubeETL_TEST\cog\buildDir\231 C:\cubeETL_TEST\cog\publish1\231
运行后后出现和下图一样的提示:
(在本机测试的目录结构,
C:\temp下没有xml文件夹)
输入D回车,命令将把文件夹buildDir下的子文件夹231拷贝到publish1文件夹下;
若在cmd中执行如下的命令:
xcopy C:\temp\cog\xml\ C:\temp\xml\
运行后将提示,无效路径 复制了0个文件,如下图
- 大小: 9.3 KB
- 大小: 6.1 KB
分享到:
相关推荐
在Java编程中,`Runtime.exec()`方法是一个非常实用的功能,它允许我们执行操作系统级别的命令。这篇博客"Java使用Runtime.exec()给Windows命令提示符做了个外壳,真的很山寨!"探讨了如何利用`Runtime.exec()`来...
windows环境下IDEA java代码Runtime.getRuntime.exec中shell的执行环境的解决方案前言解决办法后记 前言 在使用IDEA本地开发监控守护线程的后台,我遇上了执行环境不兼容的问题,爆出各种“xxx不是内部或外部命令,...
在`ShellConsole`类中,我们使用`Runtime.getRuntime().exec("ls -l")`执行了`ls -l`命令,并通过`BufferedReader`读取并打印了命令的输出。注意,执行外部命令可能会抛出异常,因此需要妥善处理。 另一个类`Shell....
proc = Runtime.getRuntime().exec(command); new StreamReader(proc, proc.getInputStream(), "Output").start(); new StreamReader(proc, proc.getErrorStream(), "Error").start(); } catch (IOException ex)...
1,申请root权限Runtime.getRuntime().exec("su"); 2,通过数据输出流DataOutputStream写入pm install命令; 3,最后获取Process进程的返回值int i = process.waitFor();,如果i=0,则表明已获取root权限。
完美解决runtime.exec()执行进程block死锁以及为waitFor设置超时 不需要耗cpu的循环判断exitValue==0 开两个进程搞定
在Java编程中,有时我们需要在程序中调用Windows系统的命令行操作,例如执行外部程序、系统命令或者进行文件操作。Java提供了Runtime类和Process类来实现这一功能。以下是如何使用Java调用Windows命令行的详细步骤和...
在 Java 语言中,可以使用 Runtime.getRuntime().exec() 方法执行命令,该方法可以执行操作系统命令,并返回结果。例如,可以使用以下代码执行命令: `String cmd = "ls -l"; Process process = Runtime.getRuntime...
当调用`exec()`方法时,它会创建一个新的子进程。这个子进程有三个流:标准输出(`stdout`)、标准错误(`stderr`)和标准输入(`stdin`)。如果不处理这些流,它们可能会占用大量内存,导致程序阻塞。因此,我们...
本文将详细介绍如何使用Java Runtime类中的`getRuntime().exec()`方法来调用系统命令,并提供一些实际应用场景的例子。 ### Java Runtime.getRuntime().exec() `java.lang.Runtime`类提供了运行时系统的表示形式,...
`Runtime.getRuntime().exec(command)` 是最基础的方法,用于执行指定的系统命令。`command`参数是一个字符串,表示要执行的命令。例如,如果你想要运行`dir`命令,可以这样写: ```java String command = "cmd /...
Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...
总之,Java通过`Runtime.exec()`方法调用Shell命令,实现了与操作系统交互的能力。这种方式在处理系统级任务时非常有用,尤其是在需要执行复杂操作或者利用已有系统工具时。然而,也应当谨慎使用,以防止潜在的安全...
1. **使用Runtime类**:这是最基础的方法,通过`Runtime.getRuntime().exec()`方法执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("sh /sdcard/myscript.sh"); ``` 但是这种方法只能...
这两个方法允许Java启动一个新的进程,并执行操作系统命令。因此,我们可以在Java中执行Python脚本,例如: ```java Process process = Runtime.getRuntime().exec("python script.py"); ``` 然而,这并不涉及jar...
本文将详细介绍如何使用Java来调用应用程序以及如何在Windows操作系统中调用DOS命令。 #### 一、Java调用应用程序的基本概念 在Java中,`java.lang.Runtime`类提供了与当前运行时系统交互的方法,其中包括`exec()`...
然而,在Java中通过`Runtime.getRuntime().exec()`或`ProcessBuilder`执行命令时,可能还会遇到问题,因为这些方法在处理命令行参数时有自己的规则。在某些情况下,即使在DOS窗口中可以成功执行的命令,通过Java执行...
总结一下,Java调用本地浏览器的关键在于使用`Runtime.exec()`或`ProcessBuilder`执行操作系统级别的命令。具体命令取决于操作系统的类型,如Windows的`rundll32`,Linux的`xdg-open`,以及Mac OS的`open`。通过`...
在Java中,我们可以使用`Runtime.getRuntime().exec()`方法或者`ProcessBuilder`类来执行系统命令。下面我们将详细介绍如何使用这两种方法实现“ping”命令。 ### 使用`Runtime.getRuntime().exec()`方法 1. **...