package com.github.andlyticsproject.util; import android.content.Context; import android.net.Uri; import android.os.Environment; import android.util.Log; import com.github.andlyticsproject.io.MediaScannerWrapper; import java.io.ByteArrayOutputStream; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileUtils { private static final String TAG = FileUtils.class.getSimpleName(); private FileUtils() { } public static void writeToFile(File file, String str) { try { FileOutputStream out = new FileOutputStream(file); out.write(str.getBytes("UTF-8")); out.flush(); FileUtils.closeSilently(out); } catch (IOException e) { throw new RuntimeException(e); } } public static void writeToExternalStorage(String filename, String str) { writeToFile(new File(Environment.getExternalStorageDirectory(), filename), str); } public static void writeToAndlyticsDir(String filename, String str) { File andlyticsDir = getAndlyticsDir(); writeToFile(new File(andlyticsDir, filename), str); } private static File getAndlyticsDir() { File andlyticsDir = new File(Environment.getExternalStorageDirectory(), "andlytics"); if (!andlyticsDir.exists()) { if (!andlyticsDir.mkdirs()) { throw new RuntimeException("Couldn't create: " + andlyticsDir.getAbsolutePath()); } } return andlyticsDir; } public static void writeToDebugDir(String filename, String str) { File andlyticsDir = getAndlyticsDir(); File debugDir = new File(andlyticsDir, "debug"); if (!debugDir.exists()) { if (!debugDir.mkdirs()) { throw new RuntimeException("Couldn't create: " + debugDir.getAbsolutePath()); } } writeToFile(new File(debugDir, filename), str); } public static void tryWriteToDebugDir(String filename, String str) { try { writeToDebugDir(filename, str); } catch (Exception e) { Log.w(TAG, "Error writing debug file: " + filename, e); } } public static String readFileAsString(String filename) { FileInputStream in = null; try { in = new FileInputStream(filename); byte[] data = new byte[in.available()]; in.read(data); return new String(data, "UTF-8"); } catch (IOException e) { throw new RuntimeException(e); } finally { if (in != null) { FileUtils.closeSilently(in); } } } public static byte[] readFromUri(Context ctx, Uri uri) { InputStream in = null; try { in = ctx.getContentResolver().openInputStream(uri); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buff = new byte[1024]; int count = -1; while ((count = in.read(buff)) != -1) { baos.write(buff, 0, count); } return baos.toByteArray(); } catch (IOException e) { throw new RuntimeException(e); } finally { if (in != null) { FileUtils.closeSilently(in); } } } public static void closeSilently(Closeable c) { if (c != null) { try { c.close(); } catch (Exception e) { } } } public static void scanFile(Context ctx, String filename) { if (Utils.isFroyo()) { MediaScannerWrapper.scanFile(ctx, filename); } } }