diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 7d2ccdf5fa78c21e406eae9a120dc70a7bad34a8..9dcffd4e287227dff862a058bcef64351648c569 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -288,13 +288,16 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
 
         loadDictionaryAsync();
 
+        final String tempFileName = mFilename + ".temp";
         final File file = new File(mContext.getFilesDir(), mFilename);
+        final File tempFile = new File(mContext.getFilesDir(), tempFileName);
         FileOutputStream out = null;
         try {
-            out = new FileOutputStream(file);
+            out = new FileOutputStream(tempFile);
             BinaryDictInputOutput.writeDictionaryBinary(out, mFusionDictionary, 1);
             out.flush();
             out.close();
+            tempFile.renameTo(file);
             clearFusionDictionary();
         } catch (IOException e) {
             Log.e(TAG, "IO exception while writing file: " + e);