diff options
author | 2013-08-14 12:26:06 +0900 | |
---|---|---|
committer | 2013-08-14 17:07:44 +0900 | |
commit | bbc8a930f706d16e45dce2376ea388a0fd74bb7a (patch) | |
tree | b92ce732e1a96e2eebdff201de09dfa54582e6c5 /java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java | |
parent | ae59ce026213cd9c92f8202ccb2a337e6495119d (diff) | |
download | latinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.tar.gz latinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.tar.xz latinime-bbc8a930f706d16e45dce2376ea388a0fd74bb7a.zip |
Add FusionDictionaryBufferFromWritableByteBufferFactory.
Change-Id: I23de0a178e7f11f2cf301fd433cde60c6152055b
Diffstat (limited to 'java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java index 57a583228..a4a7ce458 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictReader.java @@ -24,6 +24,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; @@ -82,6 +83,32 @@ public class BinaryDictReader { } } + /** + * Creates FusionDictionaryBuffer from a RandomAccessFile. + */ + @UsedForTesting + public static final class FusionDictionaryBufferFromWritableByteBufferFactory + implements FusionDictionaryBufferFactory { + @Override + public FusionDictionaryBufferInterface getFusionDictionaryBuffer(final File file) + throws FileNotFoundException, IOException { + RandomAccessFile raFile = null; + ByteBuffer buffer = null; + try { + raFile = new RandomAccessFile(file, "rw"); + buffer = raFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, file.length()); + } finally { + if (raFile != null) { + raFile.close(); + } + } + if (buffer != null) { + return new BinaryDictInputOutput.ByteBufferWrapper(buffer); + } + return null; + } + } + private final File mDictionaryBinaryFile; private FusionDictionaryBufferInterface mFusionDictionaryBuffer; |