164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski/*
264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Copyright (C) 2015 The Android Open Source Project
364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski *
464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Licensed under the Apache License, Version 2.0 (the "License");
564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * you may not use this file except in compliance with the License.
664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * You may obtain a copy of the License at
764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski *
864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski *      http://www.apache.org/licenses/LICENSE-2.0
964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski *
1064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Unless required by applicable law or agreed to in writing, software
1164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * distributed under the License is distributed on an "AS IS" BASIS,
1264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * See the License for the specific language governing permissions and
1464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * limitations under the License.
1564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski */
1664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski
1764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskipackage android.support.provider;
1864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski
19369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewskiimport android.support.annotation.Nullable;
20369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewski
2164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskiimport java.io.Closeable;
2264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskiimport java.io.InputStream;
2364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskiimport java.util.Collection;
2464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski
2564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski/**
2664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * Simple static methods to perform common IO operations.
2764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski * @hide
2864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski */
2964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewskifinal class IoUtils {
30369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewski    static void closeQuietly(@Nullable Closeable closeable) {
3164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski       if (closeable != null) {
3264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            try {
3364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                closeable.close();
3464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            } catch (RuntimeException e) {
3564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                throw e;
3664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            } catch (Exception e) {
3764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                // Ignore.
3864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            }
3964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski        }
4064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski    }
4164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski
42369746f1bd8e90fb04e11f181623413b7ae8e063Tomasz Mikolajewski    static void closeQuietly(@Nullable InputStream stream) {
4364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski       if (stream != null) {
4464ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            try {
4564ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                stream.close();
4664ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            } catch (RuntimeException e) {
4764ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                throw e;
4864ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            } catch (Exception e) {
4964ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski                // Ignore.
5064ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski            }
5164ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski        }
5264ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski    }
5364ce8c2e2085a0d5ff3e69ba5520873d41c76af5Tomasz Mikolajewski}
54