java process(使用java Process执行命令报:find: 路径必须在表达式之前: | 错误)
本文目录
- 使用java Process执行命令报:find: 路径必须在表达式之前: | 错误
- java process如何一次性执行多个dos命令
- java 获取process返回值的指定部分
- java中的Process
- Java *****()这个方法是做什么用的是不是去等待这个进程结束的意思
- java 怎么调用windows外部命令
- java中的processWindowEvent()方法是什么意思
- java 怎么取外部程序运行后的返回值
- J**A,ProcessMouceEvent()与ProcessMouceMotionEvent(
使用java Process执行命令报:find: 路径必须在表达式之前: | 错误
支持正则表达式,如果认为多次敲命令麻烦,可以考虑写一写脚本。这样每次执行这个脚本就可以了。
还有如果要查询一个文件或者一个文件里的数据。你可以从拥有该文件的根目录查起,因为find命令可以递归查询多个子目录。
另外找到一个方法 find -regex ’name’ 此处的name是包含全路径的,但是此处的正则表达式语法有点不一样。
java process如何一次性执行多个dos命令
Java process是不可能一次性执行多条dos命令的,因为一次只能执行一条,人眼感觉是一下子可以执行多条。
java 获取process返回值的指定部分
请参考java API
public BufferedInputStream(InputStream in,
int size)创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。
参数:
in - 底层输入流。
size - 缓冲区大小。
抛出:
IllegalArgumentException - 如果 size 《= 0
java中的Process
Runtime****c("notepad") 返回的Process实例是基于Process子类,这点无需质疑。
任何成功实例化的对象所属的类都是非抽象的实现类,抽象的方法已被实现。
如果想查找其真实子类,可通过:
*****( Process实例引用.getClass().getName() ); // 详细可参考J**A反射机制
或着 查源码/Debug 跟踪 Runtime****c 方法的执行过程。
以上是我告诉你是些常用的技巧,这里根据我看到的源码说说:
Runtime****c 实际上调用了 ***** 的实现,不懂的可查 API 文档;
而ProcessBuilder 内部调用 *****(...) 静态方法 返回1个 ProcessImpl实例;
ProcessImpl类 正好是 Process类 的子类。
Java *****()这个方法是做什么用的是不是去等待这个进程结束的意思
*****()方法将导致当前的线程等待,如果必要的话,直到由该Process对象表示的进程已经终止。此方法将立即返回,如果子进程已经终止。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
public class ProcessDemo {
public static void main(String args) {
try {
// create a new process
*****("Creating Process...");
Process p = *****()****c("notepad****");
// cause this process to stop until process p is terminated
*****();
// when you manually close notepad**** program will continue here
*****("Waiting over.");
} catch (Exception ex) {
*****();
}
}
}
Reference:
***隐藏网址***
java 怎么调用windows外部命令
可以使用Java Process类,下面是一些例子:
Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序 该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法
*****()和Runtime****c方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息
其它的概要请参考JDK文档
下面就开始举几个简单的示例:
(1)执行简单的DOS命令,如打开一个记事本
Java代码
package *****;
import *****;
public class ProcessTest {
public static void main(String args) {
try {
Process proc=*****()****c("notepad");
} catch (IOException e) {
// TODO Auto-generated catch block
*****();
}
}
}
view plain copy
package *****;
import *****;
public class ProcessTest {
public static void main(String args) {
try {
Process proc=*****()****c("notepad");
} catch (IOException e) {
// TODO Auto-generated catch block
*****();
}
}
}
(2)使用它的其它构造方法执行相关的命令,如下例:
Java代码
package *****;
import *****;
public class ProcessTest {
public static void main(String args) {
try {
String exeFullPathName="C:/Program Files/Internet Explorer/*****";
String message="*****";
String cmd={exeFullPathName,message};
Process proc=*****()****c(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
*****();
}
}
}
view plain copy
package *****;
import *****;
public class ProcessTest {
public static void main(String args) {
try {
String exeFullPathName="C:/Program Files/Internet Explorer/*****";
String message="*****";
String cmd={exeFullPathName,message};
Process proc=*****()****c(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
*****();
}
}
}
执行上述命令可以打开Google网站
(3)列出系统正在运行的所有进程信息
Java代码
package *****;
import *****;
import *****;
import *****;
public class ListAllProcessTest {
//列出所有的进程信息
public static void main(String args) {
BufferedReader br=null;
try {
Process proc=*****()****c("tasklist");
br=new BufferedReader(new InputStreamReader(*****()));
@SuppressWarnings("unused")
String line=null;
*****("打印所有正在运行的进程信息");
while((line=*****())!=null){
*****(*****());
}
} catch (IOException e) {
*****();
}finally{
if(br!=null){
try {
*****();
} catch (Exception e) {
*****();
}
}
}
}
}
view plain copy
package *****;
import *****;
import *****;
import *****;
public class ListAllProcessTest {
//列出所有的进程信息
public static void main(String args) {
BufferedReader br=null;
try {
Process proc=*****()****c("tasklist");
br=new BufferedReader(new InputStreamReader(*****()));
@SuppressWarnings("unused")
String line=null;
*****("打印所有正在运行的进程信息");
while((line=*****())!=null){
*****(*****());
}
} catch (IOException e) {
*****();
}finally{
if(br!=null){
try {
*****();
} catch (Exception e) {
*****();
}
}
}
}
}
(4)判断一个具体的进程是否正在运行,如下例:
Java代码
package *****;
import *****;
import *****;
public class FindProcessExeTest
{
public static void main(String args){
if(findProcess("QQ****")){
*****("------判断指定的进程是否在运行------");
*****("QQ****该进程正在运行!");
}else{
*****("------判断指定的进程是否在运行------");
*****("QQ****该进程没有在运行!");
}
}
public static boolean findProcess(String processName){
BufferedReader br=null;
try{
//下面这句是列出含有processName的进程图像名
Process proc=*****()****c("tasklist /FI /"IMAGENAME eq "+processName+"/"");
br=new BufferedReader(new InputStreamReader(*****()));
String line=null;
while((line=*****())!=null){
//判断指定的进程是否在运行
if(*****(processName)){
return true;
}
}
return false;
}catch(Exception e){
*****();
return false;
}finally{
if(br!=null){
try{
*****();
}catch(Exception ex){
}
}
}
}
}
view plain copy
package *****;
import *****;
import *****;
public class FindProcessExeTest
{
public static void main(String args){
if(findProcess("QQ****")){
*****("------判断指定的进程是否在运行------");
*****("QQ****该进程正在运行!");
}else{
*****("------判断指定的进程是否在运行------");
*****("QQ****该进程没有在运行!");
}
}
public static boolean findProcess(String processName){
BufferedReader br=null;
try{
//下面这句是列出含有processName的进程图像名
Process proc=*****()****c("tasklist /FI /"IMAGENAME eq "+processName+"/"");
br=new BufferedReader(new InputStreamReader(*****()));
String line=null;
while((line=*****())!=null){
//判断指定的进程是否在运行
if(*****(processName)){
return true;
}
}
return false;
}catch(Exception e){
*****();
return false;
}finally{
if(br!=null){
try{
*****();
}catch(Exception ex){
}
}
}
}
}
其它的用法可以参考JDK文档,这里就不一一举例,毕竟它用得不多。
java中的processWindowEvent()方法是什么意思
protected void processWindowFocusEvent(WindowEvent e)处理此窗口上发生的窗口焦点事件:将它们指派到任何注册的 WindowFocusListener 对象。注:只有为此组件启用了窗口事件时,此方法才有可能被调用。这在存在以下条件之一时发生:
通过 addWindowFocusListener 注册 WindowFocusListener
通过 enableEvents(*****_EVENT_MASK) 启用窗口焦点事件
注意,如果此事件参数为 null,则此行为是不明确的,可能导致异常。
java 怎么取外部程序运行后的返回值
J**A 中 process 类的使用
Process是一个抽象类 封装了一个进程
创建 process
Process p = *****()****c(cmd); cmd 是字符串类型 也可以是字符串类型的数组 内容就是 命令行
Process p =*****();
Process 类提供了子进程的输入流,子进程的输出流子进程的输入流,等待进程完成,检查进程的退出状态以及销毁进程的方法;
创建的子进程没有自己的控制台或终端,其所有的io操作都是通过(输入流、输出流、错误流)重定向到父进程中。
destroy()
杀掉子进程。
exitValue()
返回子进程的出口值。
InputStream getErrorStream()
获得子进程的错误流。
InputStream getInputStream()
获得子进程的输入流。
OutputStream getOutputStream()
获得子进程的输出流。
waitFor()
导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止。
-------分割线,以上来自网络-------
其中的exitValue()函数返回值就是你需要的东西。按照你的示例,return 12345,取得的值不一定等于12345,因为每个不同的shell对于程序退出的返回值是有自己的定义的,不一定是把程序return的值直接返回。可以查看各类shell的编程帮助。
J**A,ProcessMouceEvent()与ProcessMouceMotionEvent(
processEvent 可以理解为是所有事件处理的中枢(事件分配者),重载它的时候要相对小心;如果你不调用*****(e);的话,是可以完全取代原有事件处理的,这种情况下可能导致其它依赖于listener模式的组件出现问题。
而mouseListener则仅仅是鼠标事件的**器,相当于注册了一个函数,等待processEvent来调用。
所以,一般来说不推荐直接重写processEvent()。
附上JDK的源码,你看看应该能理解两者关系:
Java code?
protected void processEvent(AWTEvent e) {
if (e instanceof FocusEvent) {
processFocusEvent((FocusEvent)e);
} else if (e instanceof MouseEvent) {
switch(*****()) {
case *****_PRESSED:
case *****_RELEASED:
case *****_CLICKED:
case *****_ENTERED:
case *****_EXITED:
processMouseEvent((MouseEvent)e);
break;
case *****_MOVED:
case *****_DRAGGED:
processMouseMotionEvent((MouseEvent)e);
break;
case *****_WHEEL:
processMouseWheelEvent((MouseWheelEvent)e);
break;
}
} else if (e instanceof KeyEvent) {
processKeyEvent((KeyEvent)e);
} else if (e instanceof ComponentEvent) {
processComponentEvent((ComponentEvent)e);
} else if (e instanceof InputMethodEvent) {
processInputMethodEvent((InputMethodEvent)e);
} else if (e instanceof HierarchyEvent) {
switch (*****()) {
case *****_CHANGED:
processHierarchyEvent((HierarchyEvent)e);
break;
case *****_MOVED:
case *****_RESIZED:
processHierarchyBoundsEvent((HierarchyEvent)e);
break;
}
}
}
本文相关文章:
oracle9i卸载(XP系统安装oracle9i时出现这样的错误提示什么问题请高手指教)
2026年4月30日 05:40
selecteditems无效的过程调用或参数(运行软件时,电脑显示“运行时错误5,无效的过程调用或参数)
2026年4月27日 12:20
logcat怎么看错误(android开发中logcat怎么查看错误)
2026年4月25日 10:20
createfile failed with 32 apex(apex启动错误代码32)
2026年4月23日 23:20
为什么安装了mysql打开过然后又报错(我按照百度经验里的步骤安装mysql,每次启动My**L就出现如下图的错误)
2026年4月7日 00:40
系统自带驱动缺失local(你的电脑无法启动,原因是关键驱动程序丢失或者包含错误)
2026年4月3日 00:40
更多文章:
字符串长度必须小于等于255(我是一个VB的菜鸟,我想知道VB中的字符串和变量的理论)
2026年5月10日 04:00
character加ize的形式(角色的英文character吗)
2026年5月10日 03:20
java process(使用java Process执行命令报:find: 路径必须在表达式之前: | 错误)
2026年5月10日 03:00
js在数组末尾添加元素(用js中push追加和直接用符字符串追加有什么区别)
2026年5月10日 02:40
fflush函数(在C语言编程中什么时候需要用fflush(stdin))
2026年5月10日 02:20
phpmyadmin打开空白(phpmyadmin**后出现空白页是怎么回事啊)
2026年5月10日 02:00



