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