2012-10-15 35 views
2

我已經完成了改變註冊表數據的我的.java文件。但我在Runtime.getRuntime().exec存在的行上收到「非法轉義字符」錯誤。我的錯誤在哪裏?Java和Windows - 錯誤:非法轉義字符

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!"); 
     } 
    } 
} 

回答

12

你需要逃避你的路徑中使用的反斜槓

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

你需要躲避反斜槓字符在您的註冊表路徑字符串:

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

反斜槓字符在字符串特殊的意義:它是用於引入轉義字符。如果你想直接在字符串中使用它,那麼你需要使用雙反斜槓來轉義

4

你需要逃避\與另一\,所以在您輸入的字符串替換\\\

2

Java中的反斜槓是特殊的「轉義」字符,它們提供了包含諸如標籤\t和/或新行\n以及許多其他有趣東西的東西的能力。

不用說,你「逃」出來,以及通過添加另外\字符...

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

在一個側面說明。我會使用ProcessBuilder或至少使用array argumentsRuntime#exec版本。

這將節省很多的麻煩,當涉及到處理命令參數內的空間,恕我直言

+2

幾乎每個人都調用「\」反斜槓而不是正斜槓。 http://en.wikipedia.org/wiki/Backslash –

+0

當我在談論URL時聽到人們在收音機上說_forward slash_時,我想去香蕉! – jahroy

+0

與衆不同;) – MadProgrammer

1

你需要\\

下面的代碼替換逃生\將工作

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