I write java in netbeans.I want to move files and create files.When I run the program on netbeans it works. Files creates and moved. But when I run program on the jar it doesnot copy or move. I give permisson jar and files for read , write. But it does not works.And I open jar with root user. how can i fix this?
this is my code to copy
package aaa;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class MoveFolder
{
public int copy(String from,String where )
{
int onay=0;
File srcFolder = new File(from);
File destFolder = new File(where);
//make sure source exists
if(!srcFolder.exists()){
System.out.println("Directory does not exist.");
onay = -1;
// JOptionPane.showMessageDialog(null, "Directory does not exist.");
}else{
try{
copyFolder(srcFolder,destFolder);
}catch(IOException e){
e.printStackTrace();
onay = -1;
// JOptionPane.showMessageDialog(null, "Was not Copied.");
}
}
System.out.println("Done");
return onay;
}
public 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);
// JOptionPane.showMessageDialog(null, "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);
// JOptionPane.showMessageDialog(null, "File copied from " + src + " to " + dest);
}
}
}
Why are you copying files with IO streams? Why not just do
File f; // bla bla init
File otherFile;
f.renameTo(otherFile);
Also, you need read and write permissions on the files you're trying to move (to), not on the jars you're executing ...