Browse Source

Properly close Closables in a finally clause.

We are responsible for closing these objects.
eho 7 years ago
parent
commit
47299968f9

+ 4 - 1
src/main/java/com/owncloud/android/datamodel/FilesystemDataProvider.java

@@ -26,6 +26,7 @@ import android.net.Uri;
 
 import com.owncloud.android.db.ProviderMeta;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.utils.IOHelper;
 
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
@@ -213,7 +214,7 @@ public class FilesystemDataProvider {
 
     private long getFileChecksum(String filepath) {
 
-        InputStream inputStream;
+        InputStream inputStream = null;
         try {
             inputStream = new BufferedInputStream(new FileInputStream(filepath));
             CRC32 crc = new CRC32();
@@ -228,6 +229,8 @@ public class FilesystemDataProvider {
             return -1;
         } catch (IOException e) {
             return -1;
+        } finally {
+            IOHelper.close(inputStream);
         }
     }
 }

+ 5 - 1
src/main/java/com/owncloud/android/jobs/ContactsImportJob.java

@@ -30,6 +30,7 @@ import com.evernote.android.job.Job;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.fragment.contactsbackup.ContactListFragment;
+import com.owncloud.android.utils.IOHelper;
 
 import java.io.File;
 import java.io.IOException;
@@ -115,8 +116,9 @@ public class ContactsImportJob extends Job {
         String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
         Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
         VCard vCard = null;
+        InputStream inputStream = null;
         try {
-            InputStream inputStream = getContext().getContentResolver().openInputStream(uri);
+            inputStream = getContext().getContentResolver().openInputStream(uri);
             ArrayList<VCard> vCardList = new ArrayList<>();
             vCardList.addAll(Ezvcard.parse(inputStream).all());
             if (vCardList.size() > 0) {
@@ -125,6 +127,8 @@ public class ContactsImportJob extends Job {
 
         } catch (IOException e) {
             Log_OC.d(TAG, e.getMessage());
+        } finally {
+            IOHelper.close(inputStream);
         }
         return vCard;
     }

+ 5 - 2
src/main/java/com/owncloud/android/operations/DownloadFileOperation.java

@@ -37,6 +37,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.DownloadRemoteFileOperation;
 import com.owncloud.android.utils.EncryptionUtils;
 import com.owncloud.android.utils.FileStorageUtils;
+import com.owncloud.android.utils.IOHelper;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -201,14 +202,16 @@ public class DownloadFileOperation extends RemoteOperation {
                 byte[] authenticationTag = EncryptionUtils.decodeStringToBase64Bytes(metadata.getFiles()
                         .get(mFile.getEncryptedFileName()).getAuthenticationTag());
 
+                FileOutputStream fileOutputStream = null;
                 try {
                     byte[] decryptedBytes = EncryptionUtils.decryptFile(tmpFile, key, iv, authenticationTag);
 
-                    FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
+                    fileOutputStream = new FileOutputStream(tmpFile);
                     fileOutputStream.write(decryptedBytes);
-                    fileOutputStream.close();
                 } catch (Exception e) {
                     return new RemoteOperationResult(e);
+                } finally {
+                    IOHelper.close(fileOutputStream);
                 }
             }
             moved = tmpFile.renameTo(newFile);