Мне нужно одновременно читать и записывать общий файл с различными jobIntentServices в моем приложении. Одна служба (производитель) записывает данные в файл, а другая служба (потребитель) проверяет, есть ли данные в общем файле. Если данные есть, они отправляют их и, если передача данных прошла успешно, удаляют файл. Я создал следующий класс контроллера хранения:
public class Storage {
private static final String TAG = "Storage";
public void writeToFile(String filePath, String data, Context context) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(filePath, Context.MODE_PRIVATE));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
Log.e(TAG, "File write failed: " + e.toString());
}
}
public String readFromFile(String filePath, Context context) {
String ret = "";
try {
InputStream inputStream = context.openFileInput(filePath);
if ( inputStream != null ) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ( (receiveString = bufferedReader.readLine()) != null ) {
stringBuilder.append("\n").append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}
}
catch (FileNotFoundException e) {
Log.e(TAG, "File not found: " + e.toString());
} catch (IOException e) {
Log.e(TAG, "Can not read file: " + e.toString());
}
return ret;
}
public boolean fileExists(String filename, Context context) {
File file = context.getFileStreamPath(filename);
if(file == null || !file.exists()) {
return false;
}
return true;
}
public boolean deleteFile(String filename, Context context){
File file = context.getFileStreamPath(filename);
return file.delete();
}
Этот класс не является одноэлементным.