libbluray | branch: master | hpi1 <[email protected]> | Thu Feb 19 19:51:47 2015 +0200| [7fc6531ea0873fcfe3359f894ef5188a233c1c4d] | committer: hpi1
BD-J Cache: bypass VFS > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=7fc6531ea0873fcfe3359f894ef5188a233c1c4d --- src/libbluray/bdj/java/java/io/BDFileSystem.java | 15 +++++++++++++++ src/libbluray/bdj/java/org/videolan/CacheDir.java | 15 +++++++++------ src/libbluray/bdj/java/org/videolan/VFSCache.java | 8 ++++---- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/libbluray/bdj/java/java/io/BDFileSystem.java b/src/libbluray/bdj/java/java/io/BDFileSystem.java index 3107330..9800022 100644 --- a/src/libbluray/bdj/java/java/io/BDFileSystem.java +++ b/src/libbluray/bdj/java/java/io/BDFileSystem.java @@ -64,6 +64,21 @@ public abstract class BDFileSystem extends FileSystem { } } + public static String[] nativeList(File f) { + return getFileSystem().list(f); + } + + public static boolean nativeFileExists(String path) { + return getFileSystem().getBooleanAttributes(new File(path)) != 0; + } + + public static boolean nativeDelete(File f) { + return getFileSystem().delete(f); + } + + /* + */ + public BDFileSystem(FileSystem fs) { this.fs = fs; } diff --git a/src/libbluray/bdj/java/org/videolan/CacheDir.java b/src/libbluray/bdj/java/org/videolan/CacheDir.java index 11b8f9e..a21d793 100644 --- a/src/libbluray/bdj/java/org/videolan/CacheDir.java +++ b/src/libbluray/bdj/java/org/videolan/CacheDir.java @@ -22,6 +22,8 @@ package org.videolan; import java.io.File; import java.io.IOException; +import java.io.BDFileSystem; + class CacheDir { private static LockFile lockCache(String path) { @@ -29,10 +31,11 @@ class CacheDir { } private static void cleanupCache() { - File[] files = new File(baseDir).listFiles(); + File baseDirFile = new File(baseDir); + String[] files = BDFileSystem.nativeList(baseDirFile); if (files != null) { for (int i = 0; i < files.length; i++) { - File dir = files[i]; + File dir = new File(baseDirFile, files[i]); if (dir.isDirectory()) { LockFile lock = lockCache(dir.getPath()); if (lock != null) { @@ -84,21 +87,21 @@ class CacheDir { } private static void removeImpl(File dir) { - File[] files = dir.listFiles(); + String[] files = BDFileSystem.nativeList(dir); if (files != null) { for (int i = 0; i < files.length; i++) { - File file = files[i]; + File file = new File(dir, files[i]); if (file.isDirectory()) { removeImpl(file); } else { - if (!file.delete()) { + if (!BDFileSystem.nativeDelete(file)) { logger.info("Error removing " + file.getPath()); } } } } - if (!dir.delete()) { + if (!BDFileSystem.nativeDelete(dir)) { logger.error("Error removing " + dir.getPath()); } } diff --git a/src/libbluray/bdj/java/org/videolan/VFSCache.java b/src/libbluray/bdj/java/org/videolan/VFSCache.java index 00db461..6c57974 100644 --- a/src/libbluray/bdj/java/org/videolan/VFSCache.java +++ b/src/libbluray/bdj/java/org/videolan/VFSCache.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.BDFileSystem; import org.videolan.bdjo.AppCache; class VFSCache { @@ -139,9 +140,8 @@ class VFSCache { String relPath = jarDir + name; String dstPath = cacheRoot + relPath; - File dstFile = new File(dstPath); - if (dstFile.exists()) { + if (BDFileSystem.nativeFileExists(dstPath)) { //logger.info(dstPath + " already cached"); return; } @@ -194,7 +194,7 @@ class VFSCache { String dstPath = fontRoot + relPath; File dstFile = new File(dstPath); - if (dstFile.exists()) { + if (BDFileSystem.nativeFileExists(dstPath)) { //logger.info(dstPath + " already cached"); return dstFile; } @@ -263,7 +263,7 @@ class VFSCache { } String cachePath = cacheRoot + absPath.substring(vfsRootLength); - if (!new File(cachePath).exists()) { + if (!BDFileSystem.nativeFileExists(cachePath)) { //logger.info(cachePath + " not in VFS cache"); return absPath; } _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
