OSDN Git Service

1f8f32128c64cfb8c577f64bf9b33c9a7e0e545f
[charactermanaj/CharacterManaJ.git] / src / main / java / charactermanaj / util / FileUserData.java
1 package charactermanaj.util;
2
3 import java.io.BufferedInputStream;
4 import java.io.BufferedOutputStream;
5 import java.io.File;
6 import java.io.FileInputStream;
7 import java.io.FileOutputStream;
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.io.OutputStream;
11 import java.util.logging.Level;
12 import java.util.logging.Logger;
13
14 /**
15  * ファイルベースのユーザーデータの保存先の実装
16  * @author seraphy
17  */
18 public class FileUserData implements UserData {
19
20         /**
21          * ロガー
22          */
23         private static final Logger logger = Logger.getLogger(FileUserData.class.getName());
24
25         /**
26          * 保存先ファイル
27          */
28         private File file;
29
30         public FileUserData(File file) {
31                 if (file == null) {
32                         throw new IllegalArgumentException();
33                 }
34                 this.file = file;
35         }
36
37         public boolean exists() {
38                 return file.exists() && file.isFile();
39         }
40
41         public long lastModified() {
42                 return file.lastModified();
43         }
44
45         @Override
46         public long length() {
47                 return file.length();
48         }
49
50         public InputStream openStream() throws IOException {
51                 return new BufferedInputStream(new FileInputStream(file));
52         }
53
54         public OutputStream getOutputStream() throws IOException {
55                 return new BufferedOutputStream(new FileOutputStream(file));
56         }
57
58         public boolean delete() {
59                 try {
60                         return file.delete();
61
62                 } catch (Exception ex) {
63                         // セキュリティ例外ぐらい.
64                         logger.log(Level.WARNING, "file removing failed." + file, ex);
65                         return false;
66                 }
67         }
68
69         @Override
70         public String toString() {
71                 return "FileUserData{file:" + file + "}";
72         }
73 }