8004288: (fs) Files.probeContentType problems

Reviewed-by: ahgross, sherman
This commit is contained in:
Alan Bateman 2013-02-27 11:44:41 +00:00
parent 14d39ee359
commit 013fa331c6
2 changed files with 12 additions and 2 deletions

View File

@ -1485,10 +1485,19 @@ public final class Files {
// lazy loading of default and installed file type detectors
private static class FileTypeDetectors{
static final FileTypeDetector defaultFileTypeDetector =
sun.nio.fs.DefaultFileTypeDetector.create();
createDefaultFileTypeDetector();
static final List<FileTypeDetector> installeDetectors =
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
private static List<FileTypeDetector> loadInstalledDetectors() {
return AccessController

View File

@ -67,6 +67,8 @@ public class GnomeFileTypeDetector
NativeBuffer buffer = NativeBuffers.asNativeBuffer(path.getByteArrayForSysCalls());
try {
if (gioAvailable) {
// GIO may access file so need permission check
path.checkRead();
byte[] type = probeUsingGio(buffer.address());
return (type == null) ? null : new String(type);
} else {
@ -76,7 +78,6 @@ public class GnomeFileTypeDetector
String s = new String(type);
return s.equals(GNOME_VFS_MIME_TYPE_UNKNOWN) ? null : s;
}
} finally {
buffer.release();
}