feisty meow concerns codebase 2.140
FileSystemHelper.java
Go to the documentation of this file.
1package org.gffs.filesystem;
2
3import java.io.File;
4import java.io.FileNotFoundException;
5import java.nio.file.Files;
6import java.nio.file.Path;
7
8import org.apache.commons.logging.Log;
9import org.apache.commons.logging.LogFactory;
10
11public class FileSystemHelper
12{
13 private static Log _logger = LogFactory.getLog(FileSystemHelper.class);
14
18 public static boolean pathContainsLink(String path) throws FileNotFoundException
19 {
20 // replace any backslashes with forward slashes.
21 path = path.replaceAll("\\+", "/");
22
23 // make sure path is absolute.
24 if (!path.startsWith("/")) {
25 String msg = "path passed in was not absolute: '" + path + "'";
26 _logger.error(msg);
27 throw new FileNotFoundException(msg);
28 }
29
30 // replace any double slashes with single ones.
31 path = path.replaceAll("//", "/");
32 String[] components = path.split("/");
33
34 String currentPath = ""; // never expected to be a link.
35 for (String component : components) {
36 currentPath = currentPath + "/" + component;
37 if (isFileSymLink(new File(currentPath))) {
38 return true;
39 }
40 }
41 return false;
42
43 /*
44 * future: this could be more useful if it returned the position of the link as a component in path, but then we also need to accept a
45 * starting point for the link searching so they can find all of them.
46 */
47 }
48
52 public static boolean isFileSymLink(File path)
53 {
54 Path nioPath = path.toPath();
55 return Files.isSymbolicLink(nioPath);
56 }
57
61 public static String sanitizeFilename(String toClean)
62 {
63 if (toClean == null)
64 return toClean; // can't fix nothing.
65 // _logger.debug("before='" + toClean + "'");
66
67 String toReturn = toClean.replace('\\', '/');
68
69 // future: any other cleanings we should do on the path?
70
71 // _logger.debug("after='" + toReturn + "'");
72 return toReturn;
73 }
74
75 static public void main(String[] args)
76 {
77 String uglyPath = "C:\\Program Files\\GenesisII\\";
78 String fixedPath = sanitizeFilename(uglyPath);
79 String expectedPath = "C:/Program Files/GenesisII/";
80 if (!fixedPath.equals(expectedPath)) {
81 System.err.println("FAILURE IN PARSING! result is not right: '" + fixedPath + "' when it should be '" + expectedPath);
82 System.exit(1);
83 } else {
84 System.err.println("parsing occurred as expected.");
85 }
86 System.exit(0);
87 }
88
89}
static String sanitizeFilename(String toClean)
static boolean pathContainsLink(String path)
static boolean isFileSymLink(File path)