1.问题描述
windows文件系统的目录分隔符是\,但是D:\JavaBooks和D:/JavaBooks为什么都可以正确地打开JavaBooks目录?
2.截图
3.代码
/**
* 判断目录是否存在
* @param fn 完整文件名(例如,E:\SrcMyeclipse10\ppet\2015-9-18\.metadata\.me_tcat\webapps\ROOT\photos\P\P0184\P0184-G.04.SAMPLE.jpg)
* @return 布尔值
*/
private boolean ensureDirectoryIsExisted(String fn) {
fn = fn.replace('\\', '/');
int pos = fn.lastIndexOf('/');
if (pos == -1)
return false;
String path = fn.substring(0, pos);
File f = new File(path);
if (!f.exists())
f.mkdirs();
return f.exists();
}
说明:这个判断目录是否存在的方法不管是在linux还是在windows都是没有问题的。
我现在不明白的就是,这行代码fn = fn.replace('\\', '/');把E:\SrcMyeclipse10\ppet\2015-9-18\.metadata\.me_tcat\webapps\ROOT\photos\P\P0184\P0184-G.04.SAMPLE.jpg替换成/之后在linux文件系统是可以判断目录是否存在(这个我能理解,因为linux的文件分隔符就是/),但是在windows上也是可以判断目录是否存在(这个我就不能理解,因为windows的文件分隔符不是\吗)?
为了兼容已经处理了,就像换行回车符一样