给定Java'File'对象,我如何检测它是否引用符号链接?
(如果它有帮助/重要,我知道文件是指目录,而不是文件)
我们在这里谈论java 1.6.由于尚未支持symoblic链接,如何检查它们的存在.
1:告诉链接文件本身是否存在(即使链接断开也返回true)
2:按照链接告诉wheather底层文件存在.
除了JNI,真的没有办法实现这个吗?
在我的应用中,用户选择文件.在内部,我存储有关文件的信息,我根据文件路径键入该文件.下次使用该文件时,我会处理存储的信息.麻烦的是我实例化我的文件:
File file1 = new File(Environment.getExternalStorageDirectory() + "/test.txt");
然后,在特定的JB设备上,file1.getCanonicalPath()给出:"/ storage_emulated/0/test.txt".
麻烦的是当其他应用程序在Intent中使用文件路径启动我的应用程序时,它们发送的路径往往看起来像:"/ mnt/sdcard/test.txt".
是否有明智的策略来消除这两条路径的歧义?可能我应该以不同方式实例化我的文件?
编辑:
麻烦的是,两个文件的两个canaonical路径不相等.对于以下,cp1=="mnt/sdcard/test/txt"
和cp2=="/storage/emulated/0/text/txt"
:
File file1 = new File("/mnt/sdcard/test.txt");
File file2 = new File("/storage/emulated/0/test.txt");
String cp1 = file1.getCanonicalPath();
String cp2 = file2.getCanonicalPath();
Run Code Online (Sandbox Code Playgroud) 我正在扫描从"/"开始的所有目录,以找到一些特定的目录,如"MYFOLDER".但是,该文件夹是我获得同一文件夹的双重实例.发生这种情况是因为一个文件夹位于"/ mnt/sdcard/MYFOLDER"中,并且同一文件夹中的符号链接位于"/ sdcard/MYFOLDER"中.
我的问题是,"有没有办法确定文件夹是否是符号链接?".请给我一些建议..
我需要计算目录的物理大小.这样做的天真算法可能是:
public static long getFolderSize(File dir) {
long size = 0;
for (File file : dir.listFiles()) {
if (file.isFile()) {
System.out.println(file.getName() + " " + file.length());
size += file.length();
}
else
size += getFolderSize(file);
}
return size;
}
Run Code Online (Sandbox Code Playgroud)
但如何处理符号链接?