"copyDirectory" multiple files-folder into new one fails

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • chrisbirk
    New Member
    • Jul 2008
    • 4

    "copyDirectory" multiple files-folder into new one fails

    Hi!
    I want to write an application on windows xp, which iterates n times a model script (exe) and copies every single run the results (multiple files such as text, maps, subfolders,etc) from the existing folder into a new one. The code works, but no files nor folders are copied. This is how far as I got being an absolute beginner in Java. Thanks for any help,
    CB

    [I]import java.io.*;

    public class PCRmain {

    public static void main(String[] args) throws InterruptedExce ption
    { /* specify number of model iterations... */

    try {
    File sim = new File("D:/eclipse/Hydro/sim");
    File source = new File ("D:/eclipse/Hydro/PCRaster");

    for (int j = 1; j < Integer.parseIn t(nb)+1; j++)
    { /* call PCRaster and specify model file .mod and path */

    String command = "C:/PCRaster/apps/pcrcalc -f";
    String arg = "D:/PCRaster/workspace/OPTI_test/OPTItest.mod";
    Runtime runtime = Runtime.getRunt ime();
    Process process = runtime.exec(co mmand + " " + arg);
    process.waitFor ();


    /* Copies results for every single run into "sim" folders */

    if (source.isDirec tory())
    { if (!sim.exists())
    {/* create j result folders called "sim" */
    String folder_name = "sim_" + j;
    String directory = "D:/eclipse/Hydro/" + folder_name;
    File dir = new File(directory) ;
    dir.mkdir();

    String files[] = source.list();
    for(int i = 0; i < files.length; i++)
    { copyDirectory(n ew File(source, files[i]), new File(sim, files));}}
    else
    { if(source.exist s())
    {System.out.pri ntln("File or directory does not exist.");
    System.exit(0); }
    else {
    InputStream in = new FileInputStream (source);
    OutputStream out = new FileOutputStrea m(sim);

    /* Transfer bytes from in to out*/
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
    out.write(buf, 0, len);}
    in.close();
    out.close();}
    }}}}

    catch(IOExcepti on e)
    { javax.swing.JOp tionPane.showCo nfirmDialog(nul l,
    "The .exe can't be found.","Verify path.",
    javax.swing.JOp tionPane.PLAIN_ MESSAGE);
    return;
    }}
  • r035198x
    MVP
    • Sep 2006
    • 13225

    #2
    The File.renameTo method should be useful here.

    Comment

    • chrisbirk
      New Member
      • Jul 2008
      • 4

      #3
      Originally posted by r035198x
      The File.renameTo method should be useful here.
      Thanks for the quick reply!
      I tried the following in my iteration loop, which I suppose is not correctly implemented. Could you kindly give me another hint?

      /* Copies results for every single run into "sim" folders */
      { if (!sim.exists())
      {/* create j result folders called "sim" */
      String folder_name = "sim_" + j;
      String directory = "D:/eclipse/Hydro/" + folder_name;
      File dir = new File(directory) ;

      dir.mkdir();
      renameTo (source, dir) ;

      Comment

      • r035198x
        MVP
        • Sep 2006
        • 13225

        #4
        Originally posted by chrisbirk
        Thanks for the quick reply!
        I tried the following in my iteration loop, which I suppose is not correctly implemented. Could you kindly give me another hint?

        /* Copies results for every single run into "sim" folders */
        { if (!sim.exists())
        {/* create j result folders called "sim" */
        String folder_name = "sim_" + j;
        String directory = "D:/eclipse/Hydro/" + folder_name;
        File dir = new File(directory) ;

        dir.mkdir();
        renameTo (source, dir) ;
        That obviously doesn't compile right?
        [CODE=java]File c = new File("/root/Desktop/stocks");
        c.renameTo( new File("/root/Desktop/temp/stocks"));[/CODE]
        Will copy the folder stocks and all it's contents from the desktop to the temp folder on the desktop.

        Comment

        • chrisbirk
          New Member
          • Jul 2008
          • 4

          #5
          Hi!
          thanks again for your help. I can now rename folders and its content from another directory into a new one, but renaming the working folder ("PCRaster" - where the model writes the results in) to the newly created sim_n folder for every iteration step is still not working. As I don't get any error messages when compiling and setting the code up and as I'm new to Java still not knowing about limitations or exceptions I'd like to ask for another hint.
          Cheers,
          CB

          File source = new File ("D:/Eclipse/Hydro/PCRaster");
          source.renameTo (new File ("D:/Eclipse/Hydro/sim~"));

          Comment

          • r035198x
            MVP
            • Sep 2006
            • 13225

            #6
            Why don't you post the code you have now and explain what you want it to do.

            P.S The icon for code tags when posting code is the one with the # symbol.

            Comment

            • chrisbirk
              New Member
              • Jul 2008
              • 4

              #7
              Hi,
              here's the code with the problem copying the results for every iteration into a newly created "sim" folder.
              Cheers,
              CB

              Code:
              import java.io.*; 
              public class PCRmain {
              	public static void main(String[] args) throws InterruptedException
              	{
              		/* specify number of model iterations */
              		
              		String nb = "0";
              		System.out.println("type number of iterations :");
              		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
              		
              		try { nb = br.readLine();
              		       System.out.println("nb = " + nb);}
              		catch ( IOException error ) {
              			System.err.println("no number");
              			return;
              		} 
              		try
              		{			
              			for (int j = 1; j < Integer.parseInt(nb)+1; j++)
              			{			
              			/* call model and specify model file .mod and path */
              				
              			String command = "C:/PCRaster/apps/pcrcalc -f";
              			String arg ="D:/PCRaster/workspace/OPTI_test/OPTItest.mod";
              			Runtime runtime = Runtime.getRuntime();
              			Process process = runtime.exec(command + " " + arg);
              			process.waitFor();
              								
              			/* create j result folders called "sim" */
              					
              			String folder_name = "sim_" + j;
              			String directory = "D:/Eclipse/Hydro/" + folder_name;
              			File dir = new File(directory);
              			dir.mkdir();
              					
              			/* Copy results for j runs into "sim" folders */
              					
              			File source = new File ("D:/Eclipse/Hydro/PCRaster");
              			source.renameTo (new File ("D:/Eclipse/Hydro/sim~"))	;					}}
              					
              		catch(IOException e)
              		{ javax.swing.JOptionPane.showConfirmDialog(null,
              		"The .exe can't be found.","Verify path.",
              		javax.swing.JOptionPane.PLAIN_MESSAGE);
              		return;
              		}}	
              	}

              Comment

              Working...