我现在做Swing的桌面操作程序,需要能够在Linx系统中运行。想用如下代码实现,打开Linx系统中的文件。但是总是不执行。但也不报错。这是怎么加速,哪位高众人指点一下。
其中imagePath是所要打开文件的物理路径。
String str[] = {"/bin/sh", "-c", "ls> "+imagePaht};
Runtime.getRuntime().exec(str);
我相是/bin/sh", "-c", "ls> 这个写的不正确,但不知道该怎么写。(没有接触过Linx)
------解决方案--------------------
Runtime.getRuntime().exec("cat " + imagePaht);
------解决方案--------------------
Runtime.getRuntime().exec("more /home/username/yourFile");
然后从输出流中取得内容就行了。但是这个为什么不用java的文件流做呢?
你具体想干什么呢?我看你的命令没看懂你的意思。
------解决方案--------------------
1)打开word这样的界面程序,假如office2003在如下路径
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'");
要用\"或者单引号把命令扩起来的。
------解决方案--------------------
对于顶楼的例子,最起码,管道定向符号“>“不是运行参数。肯定看不到结果的。
至于不报错么,因为命令确实得到了执行,因为/bin/sh这个执行程序是有的。至于错误信息,那是输出到你启动的那个进程的标准错误流的,但是你没有任何地方得到了这个流,所以看不到。
------解决方案--------------------
没明白楼主问题。
Java的Swing程序,如果想在Linux系统上运行,一般情况下,在Linux系统上安装JRE就可以了。
如果JRE安装了,但,Swing程序还无法运行,一方面要看环境变量是否设置好了,另一方要看是不是Swing程序还需要什么特殊的包,比如汉字字体什么的。
如果Swing程序能够正常运行。那么,打开文件,这个词就比较难于确定了。
一般讲打开文件,应该是指访问某个文件的内容,最常见的就是文本文件了。当然,你打开个什么图片文件,那我也没啥话说。如果楼主所说的是我现在说的这种情况的话。那其实应该是使用Java来访问某个文件。再结合Swing编程的话,应该是,如果是文本文件,那么应该在界面上显示文本文件的文字内容;图片文件应该是显示图片的内容。等等。
看了楼主的示例代码后,感觉楼主好像是在调用控制台的命令,貌似是想运行另外的什么程序。
如果楼主是想用Java调用系统的控制台命令,或者采用这种方式运行其他程序的话。难度不大,简单看下JDK的API文档,那个方法的使用是很简单的事情。
如果你想用Java调用Linux系统上已经安装的绘图程序来打开一个图片的话(注意,不是用Java来打开)。
命令行的参数应该有那个绘图程序的路径以及图片文件的路径,如果情况很变态的话,还要注意环境变量。
------解决方案--------------------
方法一:
Runtime rt=Runtime.getRuntime();
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();
}