You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by br...@apache.org on 2013/01/08 00:21:50 UTC

[1/3] android commit: Add support for reading slices of text files.

Add support for reading slices of text files.


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/552885db
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/552885db
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/552885db

Branch: refs/heads/master
Commit: 552885dbd3a05672b2f347b15307d4a902a0086a
Parents: 6efeb14
Author: Braden Shepherdson <br...@chromium.org>
Authored: Wed Jan 2 15:34:39 2013 -0800
Committer: Braden Shepherdson <br...@chromium.org>
Committed: Wed Jan 2 15:34:39 2013 -0800

----------------------------------------------------------------------
 framework/src/org/apache/cordova/FileUtils.java |   25 +++++++++++++++--
 1 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/552885db/framework/src/org/apache/cordova/FileUtils.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/FileUtils.java b/framework/src/org/apache/cordova/FileUtils.java
index 8aff262..be5224e 100755
--- a/framework/src/org/apache/cordova/FileUtils.java
+++ b/framework/src/org/apache/cordova/FileUtils.java
@@ -112,7 +112,16 @@ public class FileUtils extends CordovaPlugin {
                 callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
             }
             else if (action.equals("readAsText")) {
-                String s = this.readAsText(args.getString(0), args.getString(1));
+                int start = 0;
+                int end = Integer.MAX_VALUE;
+                if (args.length() >= 3) {
+                    start = args.getInt(2);
+                }
+                if (args.length() >= 4) {
+                    end = args.getInt(3);
+                }
+
+                String s = this.readAsText(args.getString(0), args.getString(1), start, end);
                 callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, s));
             }
             else if (action.equals("readAsDataURL")) {
@@ -932,17 +941,27 @@ public class FileUtils extends CordovaPlugin {
      * @param filename			The name of the file.
      * @param encoding			The encoding to return contents as.  Typical value is UTF-8.
      * 							(see http://www.iana.org/assignments/character-sets)
+     * @param start                     Start position in the file.
+     * @param end                       End position to stop at (exclusive).
      * @return					Contents of file.
      * @throws FileNotFoundException, IOException
      */
-    public String readAsText(String filename, String encoding) throws FileNotFoundException, IOException {
+    public String readAsText(String filename, String encoding, int start, int end) throws FileNotFoundException, IOException {
+        int diff = end - start;
         byte[] bytes = new byte[1000];
         BufferedInputStream bis = new BufferedInputStream(getPathFromUri(filename), 1024);
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         int numRead = 0;
-        while ((numRead = bis.read(bytes, 0, 1000)) >= 0) {
+
+        if (start > 0) {
+            bis.skip(start);
+        }
+
+        while ( diff > 0 && (numRead = bis.read(bytes, 0, Math.min(1000, diff))) >= 0) {
+            diff -= numRead;
             bos.write(bytes, 0, numRead);
         }
+
         return new String(bos.toByteArray(), encoding);
     }