@Override public Boolean apply(Context context) { return SaveLogHelper.checkIfSdCardExists() && SaveLogHelper.legacySavedLogsDirExists(); } }, new Callback<Context>(){
private static File getSavedLogsDirectory() { File catlogDir = getCatlogDirectory(); File savedLogsDir = new File(catlogDir, SAVED_LOGS_DIR); if (!savedLogsDir.exists()) { savedLogsDir.mkdir(); } return savedLogsDir; }
public static File getFile(String filename) { File catlogDir = getSavedLogsDirectory(); File file = new File(catlogDir, filename); return file; }
@Override public void onCallback(Context context) { if (SaveLogHelper.checkIfSdCardExists()) { SaveLogHelper.moveLogsFromLegacyDirIfNecessary(); } } }),
private static File saveTemporaryZipFileAndThrow(String filename, List<File> files) throws IOException { File zipFile = new File(getTempDirectory(), filename); ZipOutputStream output = null; try { output = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), BUFFER)); for (File file : files) { FileInputStream fi = new FileInputStream(file); BufferedInputStream input = null; try { input = new BufferedInputStream(fi, BUFFER); ZipEntry entry = new ZipEntry(file.getName()); output.putNextEntry(entry); copy(input, output); } finally { if (input != null) { input.close(); } } } } finally { if (output != null) { output.close(); } } return zipFile; }
public static synchronized boolean saveLog(CharSequence logString, String filename) { return saveLog(null, logString, filename); }
public static boolean checkSdCard(Context context) { boolean result = SaveLogHelper.checkIfSdCardExists(); if (!result) { Toast.makeText(context, R.string.sd_card_not_found, Toast.LENGTH_LONG).show(); } return result; } public static boolean checkIfSdCardExists() {
public static File saveTemporaryZipFile(String filename, List<File> files) { try { return saveTemporaryZipFileAndThrow(filename, files); } catch (IOException e) { log.e(e, "unexpected error"); } return null; }
public static File saveTemporaryFile(Context context, String filename, CharSequence text, List<CharSequence> lines) { PrintStream out = null; try { File tempFile = new File(getTempDirectory(), filename); // specifying BUFFER gets rid of an annoying warning message out = new PrintStream(new BufferedOutputStream(new FileOutputStream(tempFile, false), BUFFER)); if (text != null) { // one big string out.print(text); } else { // multiple lines separated by newline for (CharSequence line : lines) { out.println(line); } } log.d("Saved temp file: %s", tempFile); return tempFile; } catch (FileNotFoundException ex) { log.e(ex,"unexpected exception"); return null; } finally { if (out != null) { out.close(); } } }
Date lastModified = SaveLogHelper.getLastModifiedDate(filename.toString()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(USER_READABLE_DATE_FORMAT);
public static synchronized boolean saveLog(List<CharSequence> logLines, String filename) { return saveLog(logLines, null, filename); }
public static void deleteLogIfExists(String filename) { File catlogDir = getSavedLogsDirectory(); File file = new File(catlogDir, filename); if (file.exists()) { file.delete(); } }
public static File getTempDirectory() { File catlogDir = getCatlogDirectory(); File tmpDir = new File(catlogDir, TMP_DIR); if (!tmpDir.exists()) { tmpDir.mkdir(); } return tmpDir; }
public static Date getLastModifiedDate(String filename) { File catlogDir = getSavedLogsDirectory(); File file = new File(catlogDir, filename); if (file.exists()) { return new Date(file.lastModified()); } else { // shouldn't happen log.e("file last modified date not found: %s", filename); return new Date(); } }
/** * I used to save logs to /sdcard/catlog_saved_logs. Now it's /sdcard/catlog/saved_logs. Move any files that * need to be moved to the new directory. * * @param sdcardDir * @param savedLogsDir */ public static synchronized void moveLogsFromLegacyDirIfNecessary() { File sdcardDir = Environment.getExternalStorageDirectory(); File legacyDir = new File(sdcardDir, LEGACY_SAVED_LOGS_DIR); if (legacyDir.exists() && legacyDir.isDirectory()) { File savedLogsDir = getSavedLogsDirectory(); for (File file : legacyDir.listFiles()) { file.renameTo(new File(savedLogsDir, file.getName())); } legacyDir.delete(); } }
File catlogDir = getSavedLogsDirectory();
private static boolean saveLog(List<CharSequence> logLines, CharSequence logString, String filename) { File catlogDir = getSavedLogsDirectory();
public static SavedLog openLog(String filename, int maxLines) { File catlogDir = getSavedLogsDirectory(); File logFile = new File(catlogDir, filename);