/**
* 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);
}
}