android-calculatorpp/android-app/src/main/java/arity/calculator/FileHandler.java
Sergey Solovyev 5f7ee1e64e new plotter
2012-12-31 00:37:14 +04:00

63 lines
1.5 KiB
Java
Executable File

// Copyright (C) 2009 Mihai Preda
package arity.calculator;
import android.content.Context;
import java.io.*;
abstract class FileHandler {
private String fileName;
private Context context;
private int version;
boolean fileNotFound;
private DataInputStream openInput() throws IOException {
try {
return new DataInputStream(new BufferedInputStream(context.openFileInput(fileName), 256));
} catch (FileNotFoundException e) {
fileNotFound = true;
return null;
}
}
private DataOutputStream openOutput() throws IOException {
return new DataOutputStream(new BufferedOutputStream(context.openFileOutput(fileName, 0), 256));
}
FileHandler(Context context, String fileName, int version) {
this.context = context;
this.fileName = fileName;
this.version = version;
}
void load() {
try {
DataInputStream is = openInput();
if (is != null) {
int readVersion = is.readInt();
if (readVersion != version) {
throw new IllegalStateException("invalid version " + readVersion);
}
doRead(is);
is.close();
}
} catch (IOException e) {
throw new RuntimeException("" + e);
}
}
void save() {
try {
DataOutputStream os = openOutput();
os.writeInt(version);
doWrite(os);
os.close();
} catch (IOException e) {
throw new RuntimeException("" + e);
}
}
abstract void doRead(DataInputStream is) throws IOException;
abstract void doWrite(DataOutputStream os) throws IOException;
}