/* * Copyright (c) 2019, Livio, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following * disclaimer in the documentation and/or other materials provided with the * distribution. * * Neither the name of the Livio Inc. nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package com.smartdevicelink.util; import android.support.annotation.NonNull; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.nio.file.Files; public class FileUtls { private static final String TAG = "FileUtls"; /** * When using on Android, this method should only be used for Android Oreo and newer * @param file the path to the file * @return a byte array representation of the file if one exists */ public static byte[] getFileData(String file){ return getFileData(file,null); } /** * When using on Android, this method should only be used for Android Oreo and newer * @param filePath the path to the file * @param fileName the name of the file * @return a byte array representation of the file if one exists */ public static byte[] getFileData(String filePath, String fileName){ if(filePath != null && filePath.length() > 0) { File file; if(fileName != null && fileName.length() > 0 ){ file = new File(filePath, fileName); }else{ file = new File(filePath); } if (file.exists() && file.isFile() && file.canRead()) { try { return Files.readAllBytes(file.toPath()); } catch (IOException e) { e.printStackTrace(); } } } return null; } public static byte[] downloadFile(@NonNull String urlStr){ try { URL url = new URL(urlStr); URLConnection connection = url.openConnection(); InputStream inputStream = connection.getInputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int nRead; byte[] data = new byte[4096]; while ((nRead = inputStream.read(data, 0, data.length)) != -1) { buffer.write(data, 0, nRead); } return buffer.toByteArray(); }catch (Exception e){ DebugTool.logError(TAG, "Unable to download file - " + urlStr, e); return null; } } }