-2

Ok, so im writing a program that transfers files from my usb to a computer (so i can set up stuff quickly for something im doing on monday) and im trying to make it make a shortcut on the desktop so that you dont have to go into the source folder of the files transfered so you can start up the program again in case you exit it. heres my code, and the title is the error im getting.

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);
    }
}
}
Abraham Andujo
  • 147
  • 1
  • 6
  • 12
  • you seem to be using UNIX separators (`/`) for Windows paths, have you tried using `File.separator` instead? – michele b Mar 30 '12 at 19:14
  • 1
    Not much of this makes sense. `ls -al` is a Unix command that won't work on Windows; you have `c:/ocuments...` what happened to the `D`? Why do you initialize `line` and then immediately replace that value with the output from the command? Why do you have invalid syntax in the `line` initializer (two strings with no `+`)? – Jim Garrison Mar 30 '12 at 19:22

1 Answers1

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

This line seems malformed. You have two strings without + in between.

Ashwinee K Jha
  • 9,187
  • 2
  • 25
  • 19