diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 46b363c..b0b65ed 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -46,7 +46,7 @@
     /**
      * The size of the temporary buffer to copy files.
      */
-    private static final int FILE_READ_BUFFER_SIZE = 1024;
+    private static final int FILE_READ_BUFFER_SIZE = 8192;
     // TODO: make the following data common with the native code
     private static final byte[] MAGIC_NUMBER_VERSION_1 =
             new byte[] { (byte)0x78, (byte)0xB1, (byte)0x00, (byte)0x00 };
@@ -149,7 +149,7 @@
 
         final Uri.Builder wordListUriBuilder = getProviderUriBuilder(id);
         final String finalFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context);
-        final String tempFileName = finalFileName + ".tmp";
+        final String tempFileName = BinaryDictionaryGetter.getTempFileName(id, context);
 
         for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
             InputStream originalSourceStream = null;
@@ -287,6 +287,7 @@
      * @param input the stream to be copied.
      * @param output an output stream to copy the data to.
      */
+    // TODO: make output a BufferedOutputStream
     private static void checkMagicAndCopyFileTo(final BufferedInputStream input,
             final FileOutputStream output) throws FileNotFoundException, IOException {
         // Check the magic number
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 201a101..c747dc6 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -164,6 +164,18 @@
     }
 
     /**
+     * Generates a unique temporary file name in the app cache directory.
+     *
+     * This is unique as long as it doesn't get called twice in the same millisecond by the same
+     * thread, which should be more than enough for our purposes.
+     */
+    public static String getTempFileName(String id, Context context) {
+        final String fileName = replaceFileNameDangerousCharacters(id);
+        return context.getCacheDir() + File.separator + fileName + "."
+                + Thread.currentThread().getId() + "." + System.currentTimeMillis();
+    }
+
+    /**
      * Returns a file address from a resource, or null if it cannot be opened.
      */
     private static AssetFileAddress loadFallbackResource(final Context context,
