/** * Copyright (C) 2015 Fernando Cejas Open Source Project * <p/> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.fernandocejas.android10.sample.data.cache; import android.content.Context; import android.content.SharedPreferences; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** * Helper class to do operations on regular files/directories. */ public class FileManager { public FileManager() { } /** * Writes a file to Disk. * This is an I/O operation and this method executes in the main thread, so it is recommended to * perform this operation using another thread. * * @param file The file to write to Disk. */ public void writeToFile(File file, String fileContent) { if (!file.exists()) { try { FileWriter writer = new FileWriter(file); writer.write(fileContent); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } } } /** * Reads a content from a file. * This is an I/O operation and this method executes in the main thread, so it is recommended to * perform the operation using another thread. * * @param file The file to read from. * @return A string with the content of the file. */ public String readFileContent(File file) { StringBuilder fileContentBuilder = new StringBuilder(); if (file.exists()) { String stringLine; try { FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); while ((stringLine = bufferedReader.readLine()) != null) { fileContentBuilder.append(stringLine + "\n"); } bufferedReader.close(); fileReader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return fileContentBuilder.toString(); } /** * Returns a boolean indicating whether this file can be found on the underlying file system. * * @param file The file to check existence. * @return true if this file exists, false otherwise. */ public boolean exists(File file) { return file.exists(); } /** * Warning: Deletes the content of a directory. * This is an I/O operation and this method executes in the main thread, so it is recommended to * perform the operation using another thread. * * @param directory The directory which its content will be deleted. */ public void clearDirectory(File directory) { if (directory.exists()) { for (File file : directory.listFiles()) { file.delete(); } } } /** * Write a value to a user preferences file. * * @param context {@link android.content.Context} to retrieve android user preferences. * @param preferenceFileName A file name reprensenting where data will be written to. * @param key A string for the key that will be used to retrieve the value in the future. * @param value A long representing the value to be inserted. */ public void writeToPreferences(Context context, String preferenceFileName, String key, long value) { SharedPreferences sharedPreferences = context.getSharedPreferences(preferenceFileName, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putLong(key, value); editor.apply(); } /** * Get a value from a user preferences file. * * @param context {@link android.content.Context} to retrieve android user preferences. * @param preferenceFileName A file name representing where data will be get from. * @param key A key that will be used to retrieve the value from the preference file. * @return A long representing the value retrieved from the preferences file. */ public long getFromPreferences(Context context, String preferenceFileName, String key) { SharedPreferences sharedPreferences = context.getSharedPreferences(preferenceFileName, Context.MODE_PRIVATE); return sharedPreferences.getLong(key, 0); } }