java本地储存set_没有数据库的情况下,JAVA如何在本地保存信息

本地文档存储信息

这里用来存储肯定是要用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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值