Here's the problem. After some concatenations I may happen to have a string like this
"C:/shared_resources/samples\\import_packages\\catalog.zip"
or even this
"C:/shared_resources/samples/subfolder/..\\import_packages\\catalog.zip"
I want to have some code that will convert such string into a path with uniform separators.
The first solution that comes to mind is using new File(srcPath).getCanonicalPath()
, however here's the tricky part. This method relies on the system where the tests are invoked. However I need to pass the string to a remote machine (Selenium Grid node with a browser there), and the systems here and there are Linux and Windows respectively. Therefore trying to do new File("C:/shared_resources/samples\\\\import_packages\\\\catalog.zip").getCanonicalPath()
results in something like "/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip"
. And using blunt regex replacement doesn't seem a very good solution too.
Is there a way just to prune the path and make delimiters uniform (and possibly resolving ..
's) without trying to implicitly absolutize it?
Try with this:
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
Path path = Paths.get("myFile.txt");
Path absolutePath = path.toAbsolutePath();
System.out.println(absolutePath.toString());
}
}
从Apache commons-io尝试FilenameUtils.normalize()
for example here is your path:
String jarName = "C:/shared_resources/samples\\import_packages\\catalog.zip"
jarName.replaceAll("/", "\\");
jarName.replaceAll("..", "/");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.