package org.eclipse.util;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
public class ResourceUtils {
private ResourceUtils() {
}
/**
* Returns all files recursively in the given container.
*/
public static List<IFile> getAllFiles(IContainer container) {
List<IFile> files = new ArrayList<IFile>();
try {
IResource[] members = container.members();
for (IResource member : members) {
if (member instanceof IFile) {
files.add((IFile)member);
} else {
files.addAll(getAllFiles((IContainer)member));
}
}
} catch (CoreException e) {
}
return files;
}
/**
* Returns a file which has the same name as the given file, but its extension
* is replaced with the given extension.
*/
public static IFile replaceExtension(IFile file, String extension) {
IPath newPath = replaceExtension(file.getFullPath(), extension);
return ResourcesPlugin.getWorkspace().getRoot().getFile(newPath);
}
public static IPath replaceExtension(IPath path, String extension) {
IPath newPath = path.removeFileExtension();
final String dot = "."; //$NON-NLS-1$
if (path.lastSegment().startsWith(dot)) {
newPath = newPath.addTrailingSeparator().append(dot + extension); // addFileExtension() doesn't work with trailing separator
} else {
newPath = newPath.addFileExtension(extension);
}
return newPath;
}
}