/** * Plugin for NanoVM. */ package org.eclipse.nanovm.internal.ui.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.nanovm.ui.NanoVMUI; /** * Util class. * * @author tugstugi@yahoo.com */ public class FileUtil { public static void copyDirectory(File source, IFolder destination, IProgressMonitor monitor){ if(!source.isDirectory()) return; if(!destination.exists()) try { destination.create(true, true, monitor); } catch (CoreException e) { NanoVMUI.log(e); return; } File files[] = source.listFiles(); for(File file : files){ if(file.isFile()) copyFile(file, destination, monitor); else copyDirectory(file, destination.getFolder(file.getName()), monitor); } } public static void copyFile(File file, IFolder destination, IProgressMonitor monitor){ String name = file.getName(); IFile newFile = destination.getFile(name); FileInputStream input = null; try { input = new FileInputStream(file); if(newFile.exists()){ newFile.setContents(input, true, false, monitor); }else{ newFile.create(input, true, monitor); } } catch (Exception e){ e.printStackTrace(); }finally{ if(input != null){ try { input.close(); } catch (IOException e) { NanoVMUI.log(e); } } } monitor.worked(1); } }