package br.com.etyllica.util; import java.io.File; import java.io.IOException; import java.net.URL; import javax.swing.filechooser.FileSystemView; import br.com.etyllica.util.io.IOHelper; public class PathHelper { public static String currentDirectory() { String currentDirectory = ""; try { String path = new File(".").getCanonicalPath().toString(); currentDirectory = path+File.separator; return currentDirectory; } catch (IOException e) { e.printStackTrace(); } return currentDirectory; } public static String currentFileDirectory() { String currentDirectory = ""; try { String path = new File(".").getCanonicalPath().toString(); currentDirectory = IOHelper.FILE_PREFIX+path+File.separator; return currentDirectory; } catch (IOException e) { e.printStackTrace(); } return currentDirectory; } public static String upperDirectory(String path) { String separator = File.separator; if (!path.contains(separator)) { separator = "\\"; } return path.substring(0,path.lastIndexOf(separator)+1); } public static String currentPath() { URL location = PathHelper.class.getProtectionDomain().getCodeSource().getLocation(); String currentDirectory = IOHelper.FILE_PREFIX+location.getPath(); return currentDirectory; } public static String desktopDirectory() { FileSystemView filesys = FileSystemView.getFileSystemView(); return filesys.getHomeDirectory().getAbsolutePath()+File.separator; } public static String programFilesDirectory() { return System.getenv("ProgramFiles"); } public static String getExternalStoragePath() { return currentPath(); } public static String clearPath(String path) { String cleanPath = path.replaceAll("/", File.separator); final String upper = "../"; int index = cleanPath.indexOf(upper); while (index != -1) { int lastFolder = lastFolder(cleanPath, index); String before = cleanPath.substring(0, lastFolder-1); String after = cleanPath.substring(index + 3); cleanPath = before + after; index = cleanPath.indexOf(upper); } return cleanPath; } private static int lastFolder(String path, int cursor) { int index = cursor; while (path.charAt(index) != File.separatorChar) { index--; } return index; } }