Index: libadblockplus-android/src/org/adblockplus/libadblockplus/FileSystem.java |
diff --git a/libadblockplus-android/src/org/adblockplus/libadblockplus/FileSystem.java b/libadblockplus-android/src/org/adblockplus/libadblockplus/FileSystem.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bd24dc481e42604a70a02926ab7129d0417e93f7 |
--- /dev/null |
+++ b/libadblockplus-android/src/org/adblockplus/libadblockplus/FileSystem.java |
@@ -0,0 +1,155 @@ |
+/* |
+ * This file is part of Adblock Plus <https://adblockplus.org/>, |
+ * Copyright (C) 2006-2017 eyeo GmbH |
+ * |
+ * Adblock Plus is free software: you can redistribute it and/or modify |
+ * it under the terms of the GNU General Public License version 3 as |
+ * published by the Free Software Foundation. |
+ * |
+ * Adblock Plus is distributed in the hope that it will be useful, |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ * GNU General Public License for more details. |
+ * |
+ * You should have received a copy of the GNU General Public License |
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
+ */ |
+ |
+package org.adblockplus.libadblockplus; |
+ |
+public abstract class FileSystem implements Disposable |
+{ |
+ private final Disposer disposer; |
+ protected final long ptr; |
+ |
+ static |
+ { |
+ System.loadLibrary("adblockplus-jni"); |
+ registerNatives(); |
+ } |
+ |
+ public FileSystem() |
+ { |
+ this.ptr = ctor(this); |
+ this.disposer = new Disposer(this, new DisposeWrapper(this.ptr)); |
+ } |
+ |
+ public static final class StatResult |
+ { |
+ private boolean exists; |
+ |
+ public boolean exists() |
+ { |
+ return exists; |
+ } |
+ |
+ private boolean isDirectory; |
+ |
+ public boolean isDirectory() |
+ { |
+ return isDirectory; |
+ } |
+ |
+ private boolean isFile; |
+ |
+ public boolean isFile() |
+ { |
+ return isFile; |
+ } |
+ |
+ private long lastModified; |
+ |
+ public long getLastModified() |
+ { |
+ return lastModified; |
+ } |
+ |
+ public StatResult(boolean exists, boolean isDirectory, boolean isFile, long lastModified) |
+ { |
+ this.exists = exists; |
+ this.isDirectory = isDirectory; |
+ this.isFile = isFile; |
+ this.lastModified = lastModified; |
+ } |
+ |
+ @Override |
+ public String toString() |
+ { |
+ return "StatResult{" + |
+ "exists=" + exists + |
+ ", isDirectory=" + isDirectory + |
+ ", isFile=" + isFile + |
+ ", lastModified=" + lastModified + |
+ '}'; |
+ } |
+ } |
+ |
+ /** |
+ * Reads from a file. |
+ * @param path File path. |
+ * @return File's binary data. |
+ */ |
+ public abstract byte[] read(String path); |
+ |
+ /** |
+ * Writes to a file. |
+ * @param path File path. |
+ * @param data File's binary data to write. |
+ */ |
+ public abstract void write(String path, byte[] data); |
+ |
+ /** |
+ * Moves a file (i.e.\ renames it). |
+ * @param fromPath Current path to the file. |
+ * @param toPath New path to the file. |
+ */ |
+ public abstract void move(String fromPath, String toPath); |
+ |
+ /** |
+ * Removes a file. |
+ * @param path File path. |
+ */ |
+ public abstract void remove(String path); |
+ |
+ /** |
+ * Retrieves information about a file. |
+ * @param path File path. |
+ * @return File information. |
+ */ |
+ public abstract StatResult stat(String path); |
+ |
+ /** |
+ * Returns the absolute path to a file. |
+ * @param path File path (can be relative or absolute). |
+ * @return Absolute file path. |
+ */ |
+ public abstract String resolve(String path); |
+ |
+ @Override |
+ public void dispose() |
+ { |
+ this.disposer.dispose(); |
+ } |
+ |
+ private final static class DisposeWrapper implements Disposable |
+ { |
+ private final long ptr; |
+ |
+ public DisposeWrapper(final long ptr) |
+ { |
+ this.ptr = ptr; |
+ } |
+ |
+ @Override |
+ public void dispose() |
+ { |
+ dtor(this.ptr); |
+ } |
+ } |
+ |
+ private final static native void registerNatives(); |
+ |
+ private final static native long ctor(Object callbackObject); |
+ |
+ private final static native void dtor(long ptr); |
+} |