提交 9f72d15a 编写于 作者: A alanb

8004288: (fs) Files.probeContentType problems

Reviewed-by: ahgross, sherman
上级 c9d5ecb3
...@@ -1485,10 +1485,19 @@ public final class Files { ...@@ -1485,10 +1485,19 @@ public final class Files {
// lazy loading of default and installed file type detectors // lazy loading of default and installed file type detectors
private static class FileTypeDetectors{ private static class FileTypeDetectors{
static final FileTypeDetector defaultFileTypeDetector = static final FileTypeDetector defaultFileTypeDetector =
sun.nio.fs.DefaultFileTypeDetector.create(); createDefaultFileTypeDetector();
static final List<FileTypeDetector> installeDetectors = static final List<FileTypeDetector> installeDetectors =
loadInstalledDetectors(); loadInstalledDetectors();
// creates the default file type detector
private static FileTypeDetector createDefaultFileTypeDetector() {
return AccessController
.doPrivileged(new PrivilegedAction<FileTypeDetector>() {
@Override public FileTypeDetector run() {
return sun.nio.fs.DefaultFileTypeDetector.create();
}});
}
// loads all installed file type detectors // loads all installed file type detectors
private static List<FileTypeDetector> loadInstalledDetectors() { private static List<FileTypeDetector> loadInstalledDetectors() {
return AccessController return AccessController
......
...@@ -67,6 +67,8 @@ public class GnomeFileTypeDetector ...@@ -67,6 +67,8 @@ public class GnomeFileTypeDetector
NativeBuffer buffer = NativeBuffers.asNativeBuffer(path.getByteArrayForSysCalls()); NativeBuffer buffer = NativeBuffers.asNativeBuffer(path.getByteArrayForSysCalls());
try { try {
if (gioAvailable) { if (gioAvailable) {
// GIO may access file so need permission check
path.checkRead();
byte[] type = probeUsingGio(buffer.address()); byte[] type = probeUsingGio(buffer.address());
return (type == null) ? null : new String(type); return (type == null) ? null : new String(type);
} else { } else {
...@@ -76,7 +78,6 @@ public class GnomeFileTypeDetector ...@@ -76,7 +78,6 @@ public class GnomeFileTypeDetector
String s = new String(type); String s = new String(type);
return s.equals(GNOME_VFS_MIME_TYPE_UNKNOWN) ? null : s; return s.equals(GNOME_VFS_MIME_TYPE_UNKNOWN) ? null : s;
} }
} finally { } finally {
buffer.release(); buffer.release();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册