没有数据库的情况下,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;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值