本地文档存储信息
这里用来存储肯定是要用IO流,InputStream,OutputStream;
创建一个文档用来储存信息,
我们来存储一个Class类来示例;
这里我就先用这个文档来代替:D:\123\1\11\001.txt,
这里要注意一点就是这个\在 " "里面记得用两次,第一次是转意符,如果用正斜杠/就可以只用一次~
新建一个File类
File file = new File(“D:\123\1\11\001.txt”);
写入本地(序列化)
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
//这里的定义fos要在Try外面创建,方便在Finally里面释放,IO记得要释放,容易忘记,而分配空间则需要在try内捕捉异常,
oos.writeObject(“”);
//write括号内写入你要存储的信息
oos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
存储的信息
当我们吧一个Class类存入本地时,文档内存的是一个二进制编码文件,我们看到的是一堆看不懂的乱码!
取出信息到JAVA中(反序列化)
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(file);
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
if (obj instanceof User) {
this.user = (User) obj;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当然在获取的时候我们有时候想让文件有初始化的内容。比如像弄一个默认的登录账号时,我们可以在上面的代码中添加一些信息,
IOException 是我们在获取文件信息中,而文件没有信息的异常
我们可以这样初始化
在上面的代码添加一个
Catch(IOException e){
System.out.println("用户名不存在,创建管理员用户");
this.user = new User();
this.user.setUserName("admin");
this.user.setPassWord("admin");
setUserToLocal();//这个方法是上面那个写入本地的代码,我们将它写成一个方法方便调用
};
总结
我们在存储和取出信息时主要用的是IO流,记得在存和取的时候,信息要一致,比如你存的是String 类型数据时,取出的类型也要是String。
存 inputStream;
取 outputStream;