A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严海荣 高级黑马   /  2012-9-22 14:55  /  1951 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.IOException;
  2. public class RuntimeDemo {
  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 Runtime r  = Runtime.getRuntime();
  6.                 System.out.println(System.getProperty("user.dir"));//G:\JavaSe\JAVASE复习
  7.                 try {
  8.                         r.exec("java.txt");//为什么执行不了,这里的路径得是放哪儿
  9.                 } catch (IOException e) {
  10.                         // TODO Auto-generated catch block
  11.                         e.printStackTrace();
  12.                 }
  13.         }
  14. }
复制代码
我的java.txt文件在G:\JavaSe\JAVASE复习  的目录下,为什么执行不了,和环境变量有关系吗?

4 个回复

倒序浏览
本帖最后由 宁振庄 于 2012-9-22 15:18 编辑

exec()方法缺少命令。txt文件需要记事本程序(notepad.exe)打开

r.exec("java.txt");    改成r.exec("notepad.exe java.txt");           //这两个文件都是在系统环境变量里找得到所以不用写完整路径

也就是说这方法执行的是exe文件,如r.exec("d:\\魔兽争霸3\\war3.exe"),后面跟着的是以这个exe程序打开的文件(注意格式),如r.exec("d:\\迅雷看看\\XMP.EXE D:\\教育片\\某岛国片1.avi")。
回复 使用道具 举报
你回去看看老毕的IO视频有专门讲到Runtime类,notepad.exe好像是在c:\windows\system32下(XP系统),在而这个路径已经设置在系统环境变量里面了所以不用写全路径。

大多数文件都是“资源文件”,比如说java.txt,你双击这些资源文件的时候其实是系统先执行与其相关联的exe程序(默认是记事本,也就是notepad.exe),再通过这个记事本程序打开你这个java.TXT

你这么写只写了资源文件的路径当然放不了

回复 使用道具 举报
  1. import java.io.IOException;
  2. public class RuntimeDemo2 {
  3. public static void main(String[] args) {

  4. Runtime r = Runtime.getRuntime();
  5. System.out.println(System.getProperty("user.dir"));//G:\JavaSe\JAVASE复习
  6. try {
  7. r.exec("notepad G:\\JavaSe\\JAVASE复习\\java.txt");
  8. } catch (IOException e) {

  9. e.printStackTrace();
  10. }
  11. }
  12. }
复制代码
exec一个新的process对象,用来管理进程

打开你的.txt文件的时候,进入任务管理器你看到的进程是notepad.exe

所以应为r.exec("notepad G:\\JavaSe\\JAVASE复习\\java.txt");  代码如上
回复 使用道具 举报
  1. import java.io.IOException;

  2. public class RuntimeDemo {

  3.         public static void main(String[] args)  {
  4.                         Runtime r = Runtime.getRuntime();
  5.                        try {
  6.                         r.exec("G:\\JavaSe\\JAVASE复习\\java.txt");
  7.                 } catch (IOException e) {
  8.                         e.printStackTrace();
  9.                 }
  10.                              
  11.              
  12.         }

  13. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马