Java linux中的进程执行问题

Java linux中的进程执行问题,java,linux,Java,Linux,我想用记事本(使用JAVA)打开一个文件 proc.exec(“记事本”+curDir+“\auto_saved.txt”) 在哪里 String curDir = System.getProperty("user.home"); curDir=curDir+"/txt-files"; Runtime proc = Runtime.getRuntime(); 这在WIN7中正常工作,但表示未找到“home………\auto_saved.txt”路径。在LIN

我想用记事本(使用JAVA)打开一个文件

proc.exec(“记事本”+curDir+“\auto_saved.txt”)

在哪里

 String curDir = System.getProperty("user.home");
 curDir=curDir+"/txt-files";                
 Runtime proc = Runtime.getRuntime();
这在WIN7中正常工作,但表示未找到“home………\auto_saved.txt”路径。在LINUX中。 但是如果我将文件保存到(curDir+“\auto_saved.txt”);。。它创建一个文件并将其保存在LINUX中


那么,如何在/home/user/some folder/…中打开文件呢?

您希望
“\auto\u saved.txt”
中的
是一个目录分隔符,但在Linux中不是,它只是一个普通字符,可以作为文件名的一部分。使用
File.pathSeparator
(java.io.File中的静态字段);它将在Linux/Unix上运行
/
,在Windows上运行
\

  • Linux中没有记事本编辑器。许多linux发行版在/usr/bin/nano中有一个名为“nano”的文本编辑器;Ubuntu/Debian在/etc/alternations/editor中放置了一个文本编辑器;您还可以检查env{EDITOR},它有时包含文本编辑器的用户设置路径名,并覆盖您选择的编辑器(如果存在),以允许用户自定义
  • 在调用exec时,您可能希望使用可执行文件的完整路径,以防它不在路径上

  • linux上没有记事本应用程序。字符串literal
    “\auto\u saved.txt”
    不是有效的Java,将导致编译错误。它必须是
    “\\auto\u saved.txt”
    。你确定那是你的真实代码吗?没有错误..n在WIN7中工作正常..对于ubuntu,它的“/auto_saved.txt”\通常是Linux/Unix中的转义字符。它可以在文件名中使用,但必须是双转义的-
    touch\\file\\\
    -创建一个名为\file\.的文件。它在Java中也是转义字符,并且
    \a
    不是有效的转义序列,因此
    “\auto\u saved.txt”
    实际上不会编译。我尝试了这个..String pathWIN7=curDir+“/auto\u saved.txt”;显示..“C:/users/abhishek/txt files/auto_saved.txt字符串pathLINUX=“txt files/auto_saved.txt”;显示..“txtfiles/auto_saved.txt”//表示无需提供“home/user/”路径//但我已将文件保存到”home/user/txt files/auto_saved.txt“proc.exec”(“notepad”+pathWIN7);//如果os.name是windows 7 proc.exec(“notepad”+pathLINUX);//如果os.name是Ubuntu,这是有效的………bt…无法理解为什么..Ubuntu的WINE项目中有一个记事本。但是,它不是标准Ubuntu安装的一部分。您可以检查一下进程是否恢复到快速。当我在shell提示符中输入“notepad a.txt”时,有一个程序会短暂运行“notepad”程序可以在以下软件包中找到:*wine1.2*wine1.0 Try:sudo apt get install“我想知道,如果您尝试在Ubuntu中从java调用notepad,是否也会出现这种情况。