2012-03-30 44 views
-2

好的,所以即時編寫程序,從我的USB傳輸文件到計算機(所以我可以設置的東西快速爲週一即將做的事情),並試圖讓它在桌面上做一個快捷方式,所以你不必進入文件傳輸的源文件夾,所以你可以啓動程序,以防止你退出它。我的代碼,標題是錯誤即時得到。無效的轉義序列(有效的轉義序列是 b t n f r 「'\)

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 

public class Mover { 
public static void main(String[] args) throws IOException, InterruptedException { 
    String usb = new File(".").getAbsolutePath(); 
    String desktop = System.getProperty("user.home") + "/Desktop"; 
    File srcFolder = new File(usb + "/Teamspeak 3"); 
    File destFolder = new File(desktop + "/TS3"); 

    //make sure source exists 
    if(!srcFolder.exists()){ 

     System.out.println("Directory does not exist."); 
     //just exit 
     System.exit(0); 

    }else{ 

     try{ 
     copyFolder(srcFolder,destFolder); 
     }catch(IOException e){ 
     e.printStackTrace(); 
     //error, just exit 
      System.exit(0); 
     } 
    } 

    System.out.println("Done"); 
    String cmd = "ls -al"; 
    Runtime run = Runtime.getRuntime(); 
    Process pr = run.exec(cmd); 
    pr.waitFor(); 
    BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
    String line = "-shortcut -t c:/ocuments and Settings/%username%/Desktop/TS3/ts3client_win32.exe" "-n Teamspeak 3.lnk"; 
    while ((line=buf.readLine())!=null) { 
     System.out.println(line); 
    Process process = Runtime.getRuntime().exec (desktop + "/TS3/ts3client_win32.exe"); 
    System.exit(0); 
    } 
} 
public static void copyFolder(File src, File dest) 
    throws IOException{ 

    if(src.isDirectory()){ 

     //if directory not exists, create it 
     if(!dest.exists()){ 
      dest.mkdir(); 
      System.out.println("Directory copied from " 
          + src + " to " + dest); 
     } 

     //list all the directory contents 
     String files[] = src.list(); 

     for (String file : files) { 
      //construct the src and dest file structure 
      File srcFile = new File(src, file); 
      File destFile = new File(dest, file); 
      //recursive copy 
      copyFolder(srcFile,destFile); 
     } 

    }else{ 
     //if file, then copy it 
     //Use bytes stream to support all file types 
     InputStream in = new FileInputStream(src); 
      OutputStream out = new FileOutputStream(dest); 

      byte[] buffer = new byte[1024]; 

      int length; 
      //copy the file content in bytes 
      while ((length = in.read(buffer)) > 0){ 
       out.write(buffer, 0, length); 
      } 

      in.close(); 
      out.close(); 
      System.out.println("File copied from " + src + " to " + dest); 
    } 
} 
} 
+0

你似乎在Windows路徑中使用UNIX分隔符('/'),您是否嘗試過使用'File.separator'來代替? – 2012-03-30 19:14:00

+1

錯誤是哪一行? – 2012-03-30 19:15:02

+0

發佈完整堆棧跟蹤。 – kosa 2012-03-30 19:15:46

回答

1
String line = "-shortcut -t c:/ocuments and Settings/%username%/Desktop/TS3/ts3client_win32.exe" "-n Teamspeak 3.lnk"; 

此行似乎格式錯誤,你有兩個字符串,而不+之間。

相關問題