2012-03-30 20 views
-2

Ok, also schreibe ich ein Programm, das Dateien von meinem USB auf einen Computer überträgt (damit ich Sachen einrichten kann schnell für etwas, das ich am Montag mache) und ich versuche, es zu einer Abkürzung auf dem Desktop machen, so dass Sie nicht in den Quellordner der übertragenen Dateien gehen müssen, damit Sie das Programm erneut starten können, falls Sie es verlassen mein Code, und der Titel ist der Fehler im bekommen.Ungültige Escape-Sequenz (gültige sind 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

Sie scheinen UNIX-Trennzeichen ('/') für Windows-Pfade zu verwenden, haben Sie versucht, 'File.separator' stattdessen zu verwenden? –

+1

Auf welcher Zeile steht der Fehler? –

+0

Post-Full-Stack-Ablaufverfolgung. – kosa

Antwort

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

Diese Linie malformed scheint. Sie haben zwei Strings ohne zwischen + in.