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

时间:2012-10-15 04:24:00

标签: java windows file-io

我已经完成了更改注册表数据的.java文件。但是我在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!");
      }
  }
}

6 个答案:

答案 0 :(得分:15)

您需要转义路径中使用的反斜杠

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

答案 1 :(得分:4)

您需要使用其他\转义\,因此请在输入字符串中将\替换为\\

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

Java中的反斜杠是特殊的“转义”字符,它们提供了包括标签\t和/或新行\n等内容以及许多其他有趣内容的功能。

毋庸置疑,你要通过添加\字符来“逃避”它们......

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

旁注。我会使用ProcessBuilder或至少使用Runtime#exec的{​​{1}}版本。

在处理命令参数中的空格时,它会省去很多麻烦,恕我直言

答案 4 :(得分:1)

可能是因为你没有逃脱字符串中的反斜杠。有关正确转义的详细信息,请查看http://docs.oracle.com/javase/tutorial/java/data/characters.html

答案 5 :(得分:1)

您需要使用\

替换转义\\

下面的代码将起作用

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