我目前正在开发一个压缩和解压缩文件/目录的程序,当我通过git bash调用它时,它表现得有些奇怪。
该程序有三个参数(zip / unzip,inputPath,outputPath)。 例如:
java -jar zip_unzip.jar --zip H:\\zip_test H:\\test5\zip_test_4.zip
当我通过Eclipse或CMD调用它时,一切正常。如果目录结构尚不存在,则会创建目录结构,并将输入文件夹压缩到新创建的输出文件夹中。但是当我在上面的例子中通过git bash调用它时,它会以某种方式“忽略”反斜杠而不是创建名为test5\
的文件夹,而是创建一个名为test5zip_test_4.zip
以下是负责创建目录结构的代码片段,其中zippedFolder是outputPath-Parameter:
File directoryToZip = new File(inputFolder);
String targetZippedFolder = zippedFolder;
targetZippedFolder = targetZippedFolder.replace("\\", "/");
//create directory to store archive in, if it doesn't already exist
File destDir = new File(targetZippedFolder.substring(0, targetZippedFolder.lastIndexOf("/")));
if (!destDir.exists()) {
destDir.mkdirs();
}
在代码段的第3行,我用一个转发器替换每个反斜杠,因为我认为这会使它与平台无关。
有人可以向我解释git bash的行为,并建议一种更独立于平台的路径处理方法吗?