1 package charactermanaj.util;
\r
3 import java.io.BufferedInputStream;
\r
4 import java.io.BufferedOutputStream;
\r
6 import java.io.FileInputStream;
\r
7 import java.io.FileOutputStream;
\r
8 import java.io.IOException;
\r
9 import java.io.InputStream;
\r
10 import java.io.ObjectInputStream;
\r
11 import java.io.ObjectOutputStream;
\r
12 import java.io.OutputStream;
\r
13 import java.util.logging.Level;
\r
14 import java.util.logging.Logger;
\r
17 * ファイルベースのユーザーデータの保存先の実装
\r
20 public class FileUserData implements UserData {
\r
25 private static final Logger logger = Logger.getLogger(FileUserData.class.getName());
\r
32 public FileUserData(File file) {
\r
34 throw new IllegalArgumentException();
\r
39 public boolean exists() {
\r
40 return file.exists() && file.isFile();
\r
43 public long lastModified() {
\r
44 return file.lastModified();
\r
47 public InputStream openStream() throws IOException {
\r
48 return new BufferedInputStream(new FileInputStream(file));
\r
51 public OutputStream getOutputStream() throws IOException {
\r
52 return new BufferedOutputStream(new FileOutputStream(file));
\r
55 public boolean delete() {
\r
57 return file.delete();
\r
59 } catch (Exception ex) {
\r
61 logger.log(Level.WARNING, "file removing failed." + file, ex);
\r
66 public void save(Object userData) throws IOException {
\r
67 ObjectOutputStream oos = new ObjectOutputStream(getOutputStream());
\r
69 oos.writeObject(userData);
\r
76 public Object load() throws IOException {
\r
77 ObjectInputStream ois = new ObjectInputStream(openStream());
\r
80 return ois.readObject();
\r
82 } catch (ClassNotFoundException ex) {
\r
83 // 復元先クラスがみつからないということは、このアプリケーションの保存した形式としておかしい
\r
84 IOException ex2 = new IOException("invalid format.");
\r
94 public String toString() {
\r
95 return "FileUserData{file:" + file + "}";
\r