Hello I seem to have run into a problem when trying to zip a directory.
I get the error:
java.io.FileNotFoundException: C:\Users\dojo\Documents\Programming\compress (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at ZipUtility.zip(ZipUtility.java:31)
at ZipUtility.main(ZipUtility.java:21)
when i run the code
import java.io.File;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.io.*;
public class ZipUtility {
public ZipOutputStream cpZipOutputStream = null;
public String strSource = "";
public String strTarget = "";
public static long size = 0;
public static int numOfFiles = 0;
public static void main(String args[]) {
ZipUtility udZipUtility = new ZipUtility();
udZipUtility.strSource = "C:\\Users\\dojo\\Documents\\Programming\\compress\\restoreDump"; //args[0];
udZipUtility.strTarget = "C:\\Users\\dojo\\Documents\\Programming\\compress"; //args[1];
udZipUtility.zip();
}
public void zip(){
try {
File cpFile = new File (strSource);
if (!cpFile.isFile() && !cpFile.isDirectory() ) {
System.out.println("\nSource file/directory Not Found!");
return;
}
FileOutputStream fos = new FileOutputStream(strTarget);
cpZipOutputStream = new ZipOutputStream(fos);
cpZipOutputStream.setLevel(9);
zipFiles( cpFile);
cpZipOutputStream.finish();
cpZipOutputStream.close();
System.out.println("\n Finished creating zip file " + strTarget + " from source " + strSource);
System.out.println("\n Total of " + numOfFiles +" files are Zipped " );
System.out.println("\n Total of " + size + " bytes are Zipped ");
} catch (Exception e){
e.printStackTrace();
}
}
public void zipFiles(File cpFile) {
int byteCount;
final int DATA_BLOCK_SIZE = 2048;
FileInputStream cpFileInputStream;
if (cpFile.isDirectory()) {
if(cpFile.getName().equalsIgnoreCase(".metadata")){ //if directory name is .metadata, skip it.
return;
}
File [] fList = cpFile.listFiles() ;
for (int i=0; i< fList.length; i++){
zipFiles(fList) ;
}
}
else {
try {
if(cpFile.getAbsolutePath().equalsIgnoreCase(strTarget)){
return;
}
System.out.println("Zipping "+cpFile);
size += cpFile.length();
//String strAbsPath = cpFile.getAbsolutePath();
numOfFiles++;
String strAbsPath = cpFile.getPath();
String strZipEntryName = strAbsPath.substring(strSource.length()+1, strAbsPath.length());
//byte[] b = new byte[ (int)(cpFile.length()) ];
cpFileInputStream = new FileInputStream (cpFile) ;
ZipEntry cpZipEntry = new ZipEntry(strZipEntryName);
cpZipOutputStream.putNextEntry(cpZipEntry );
byte[] b = new byte[DATA_BLOCK_SIZE];
while ( (byteCount = cpFileInputStream.read(b, 0, DATA_BLOCK_SIZE)) != -1)
{
cpZipOutputStream.write(b, 0, byteCount);
}
//cpZipOutputStream.write(b, 0, (int)cpFile.length());
cpZipOutputStream.closeEntry() ;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
I really have no idea why its saying access denied if anyone can help that would be great.