Java和Windows – 错误:非法转义字符

我已经做了我的.java文件,更改registry数据。 但是,我在Runtime.getRuntime().exec所在的行上收到“非法转义字符”错误。 我的错误在哪里?

 import java.util.*; import java.applet.Applet; import java.awt.*; class test { public static void main(String args[]) { try { Runtime.getRuntime().exec("REG ADD 'HKCU\Software\Microsoft\Internet Explorer\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F"); } catch (Exception e) { System.out.println("Error ocured!"); } } } 

你需要避开你的路径中使用的反斜杠

 String windowsPath = "\\Users\\FunkyGuy\\My Documents\\Hello.txt"; 

您需要使用另一个\来转义\ ,所以在输入字符串中用\\替换\

您需要转义注册表路径字符串中的反斜杠字符:

 "REG ADD `HKCU\\Software\\ ... 

反斜杠字符在字符串中有特殊的含义:它用于引入转义字符。 如果你想在一个字符串中直接使用它,那么你需要使用一个双反斜杠来转义

在Java中的反斜杠是特殊的“逃生”字符,它们提供了包括标签\t和/或新行\n以及许多其他有趣的东西的能力。

不用说,你也可以通过添加\字符来“逃避”它们。

 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' 

在旁边注意。 我将使用ProcessBuilder,或者至少使用数组参数的Runtime#exec版本。

对于处理命令参数中的空格,恕我直言,这将节省很多麻烦

你需要用\\替换escape \

下面的代码将工作

 Runtime.getRuntime().exec("REG ADD 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");