我现在做Swing的桌面操作程序,需要能够在Linx系统中运行。想用如下代码实现,打开Linx系统中的文件。但是总是不执行。但也不报错。这是怎么加速,哪位高众人指点一下。
其中imagePath是所要打开文件的物理路径。 String str[] = {"/bin/sh", "-c", "ls> "+imagePaht};
Runtime.getRuntime().exec(str);
我相是/bin/sh", "-c", "ls> 这个写的不正确,但不知道该怎么写。(没有接触过Linx)
其中imagePath是所要打开文件的物理路径。 String str[] = {"/bin/sh", "-c", "ls> "+imagePaht};
Runtime.getRuntime().exec(str);
我相是/bin/sh", "-c", "ls> 这个写的不正确,但不知道该怎么写。(没有接触过Linx)
还有,RunTime.getRuntim().exe(str);
什么返回类型都不知道的...
然后从输出流中取得内容就行了。但是这个为什么不用java的文件流做呢?
你具体想干什么呢?我看你的命令没看懂你的意思。
Runtime.getRuntime().exec("C:\\Program Files\\Microsoft Office\\OFFICE11\\winword");2) 杀死word进程
Runtime.getRuntime().exec("tskill winword");3) xp下查看d盘文件 Process p = Runtime.getRuntime().exec("dir d:");
InputStream is = p.getInputStream(); byte[]buf = new byte[512];
StringBuffer buffer = new StringBuffer();
while(is.read(buf)!=-1){
buffer.append(new String(buf));
}
System.out.println(buffer.substring(0));综述:类似1,2这样的程序,没有中间输出,直接调用即可
类似3这样的程序,有文本输出,就用输出流即可.例子中是直接打印出来,类似的你可以用输出流记录到log中
Runtime.getRuntime().exec("/bin/sh -c 'vim /path/sample'");
要用\"或者单引号把命令扩起来的。
Runtime.getRuntime().exec("/bin/sh -c 'vim "+imagepaht+"'");
就OK。
在使用Runtim.exec()方法时,不要想像地把它当作为一个shell解释器,其实它比shell解释器弱很多。
至于不报错么,因为命令确实得到了执行,因为/bin/sh这个执行程序是有的。至于错误信息,那是输出到你启动的那个进程的标准错误流的,但是你没有任何地方得到了这个流,所以看不到。
Java的Swing程序,如果想在Linux系统上运行,一般情况下,在Linux系统上安装JRE就可以了。
如果JRE安装了,但,Swing程序还无法运行,一方面要看环境变量是否设置好了,另一方要看是不是Swing程序还需要什么特殊的包,比如汉字字体什么的。如果Swing程序能够正常运行。那么,打开文件,这个词就比较难于确定了。
一般讲打开文件,应该是指访问某个文件的内容,最常见的就是文本文件了。当然,你打开个什么图片文件,那我也没啥话说。如果楼主所说的是我现在说的这种情况的话。那其实应该是使用Java来访问某个文件。再结合Swing编程的话,应该是,如果是文本文件,那么应该在界面上显示文本文件的文字内容;图片文件应该是显示图片的内容。等等。看了楼主的示例代码后,感觉楼主好像是在调用控制台的命令,貌似是想运行另外的什么程序。
如果楼主是想用Java调用系统的控制台命令,或者采用这种方式运行其他程序的话。难度不大,简单看下JDK的API文档,那个方法的使用是很简单的事情。如果你想用Java调用Linux系统上已经安装的绘图程序来打开一个图片的话(注意,不是用Java来打开)。
命令行的参数应该有那个绘图程序的路径以及图片文件的路径,如果情况很变态的话,还要注意环境变量。
File f=new File();
rt.exec(file.getAbsolutePath()); 这样只能对那些EXE文件起作用,像TXT或者RAR这样的不可执行的会出现IOEXCEPTION;对txt文件要用rt.exec("NotePad.exe c:\\website.txt"); 其他的类推;
方法二:自动找到关联的外部程序,可以把要执行的文件的路径信息利用java的文件读写,写到一个批处理文件里,
然后从java里执行改批处理文件的内容就可以了:
批处理文件比如说是1.bat
内容是:F:\1.txt
然后
try{
Process p = Runtime.getRuntime().exec("C://1.bat");
p.waitFor();
}catch(Exception ee){
ee.printStackTrace();
}
如果是在Windows环境下运行实现打开某个格式的文件,会自动用他的编辑软件打开。比如说我要想打开一个doc文件,可以直接用office打开。
Runtime.getRuntime().exec("cmd /c \"\"" + path + "\"\"\"");
其中的path就是我所说的要打开doc文档的物理路径。当然了可以是其他任何格式的文件。exec("cmd /c \"\"" + path + "\"\"\"");这个命令会自动查找与你打开文件格式相对应的编辑软件打开。但是在Linx系统中没有像Windows的那样的方便省事的功能。
比如说我用的是红旗Linux系统。安装的是永中office.在永中office中有一个集中的文件格式主是eio.像在Windows系统中的xls,doc,ppt等格式在linux中都可以用eio格式保存。
像以上我所说的格式如果想实现Winodows系统中的功能就必须使用。
String str[] ={"/bin/sh","-c","eio "+path};
pcs = Runtime.getRuntime().exec(str);
例如:"/bin/sh","-c",这个是在Linux系统中调用命令行的正确语法,而后跟的eio是一个命令,意思是用永中office打开文件。
如果是图片则用:
String str[] ={"/bin/sh","-c","gwenview "+path};
pcs = Runtime.getRuntime().exec(str);
如果是打开压缩文件,则用:
String str[] ={"/bin/sh","-c","ark "+path};
pcs = Runtime.getRuntime().exec(str);
.如上所说的eio,gwenview,ark都是打开相应格式文件的软件。如果你的linxu系统没有安装eio。则打开不会成功。
不过,这样可能看不到终端输入吧,比如用ark的时候。
Runtime.getRuntime().exec("gedit "+file);
请问openoffice.org3 这个是什么简码