2012-03-30 57 views
-2

私のUSBからコンピュータにファイルを転送するプログラムを書いています何かのためにすぐにmondayでやっている)と私はそれがあなたがそれを終了する場合にプログラムを再起動することができるように転送されたファイルのソースフォルダに移動する必要はありませんので、デスクトップ上のショートカットを作ろうとしています。私のコード、およびエラーイムは、タイトルを取得している。無効なエスケープシーケンス(有効なものは 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'を使ってみましたか? –

+1

どの行にエラーがありますか? –

+0

完全なスタックトレースをポストします。 – kosa

答えて

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

この行は、不正な形式。あなたが間に+なしの2つの文字列を持っているようだ。

関連する問題