[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.core/src/main/org/jboss/ide/eclipse/core/util ...
Marshall Culpepper
mculpepper at jboss.com
Fri Feb 9 14:21:54 EST 2007
User: mculpepper
Date: 07/02/09 14:21:54
Modified: core/plugins/org.jboss.ide.eclipse.core/src/main/org/jboss/ide/eclipse/core/util
ResourceUtil.java
Log:
added a utility to recursively create an IFile (i.e, the file and any directories it's under that do not exist)
Revision Changes Path
1.4 +39 -0 jbosside/core/plugins/org.jboss.ide.eclipse.core/src/main/org/jboss/ide/eclipse/core/util/ResourceUtil.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ResourceUtil.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.core/src/main/org/jboss/ide/eclipse/core/util/ResourceUtil.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ResourceUtil.java 14 Sep 2006 19:54:12 -0000 1.3
+++ ResourceUtil.java 9 Feb 2007 19:21:54 -0000 1.4
@@ -21,8 +21,15 @@
*/
package org.jboss.ide.eclipse.core.util;
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
public class ResourceUtil
{
@@ -48,4 +55,36 @@
e.printStackTrace();
}
}
+
+ /**
+ * This will create a file (using IFile.create()) and any parent directories that do not exist as well.
+ * @param file The file to create
+ * @param source The input stream that will be copied as the file's contents
+ * @param force Whether or not to force creation
+ */
+ public static void safeCreateFile (IFile file, InputStream source, boolean force, IProgressMonitor monitor)
+ throws CoreException
+ {
+ if (file.exists()) return;
+
+ IProject project = file.getProject();
+
+ if (project.isAccessible())
+ {
+ IPath relativePath = file.getProjectRelativePath();
+ int folderCount = relativePath.segmentCount() - 1;
+
+ for (int i = 0; i < folderCount; i++)
+ {
+ IFolder folder = project.getFolder(relativePath.removeLastSegments(folderCount - i));
+
+ if (!folder.exists())
+ {
+ folder.create(force, true, monitor);
+ }
+ }
+
+ file.create(source, force, monitor);
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list