java之字符缓冲流、Properties、序列化

  字符缓冲流

    前缀表示功能

    后缀表示具体是什么流

    BufferedWriter(Writer w)

    特有方法:newLine() 换行符

    该方法具有平台(操作系统)无关性

    mac \n

    windows \r\n

    BufferedReader(Reader r)


  写(BufferedWriter)

private static void fun1() throws IOException {
		FileWriter fw=new FileWriter("/Users/lanou/Desktop/Test/weixing.txt");
		//创建缓冲字符流
		BufferedWriter bw=new BufferedWriter(fw);
		//写
		bw.write("算了吧");
		//添加换行
		bw.newLine();
		bw.write("地方的地方");
		//刷新(字符流都需要刷新)
		bw.flush();
		//关闭资源
		bw.close();
	}
  读(BufferedReader)
private static void fun2() throws FileNotFoundException, IOException {
		//BufferedReader 特有读取方法
		//readerLine() 一行一行读
		//返回来的字符串不包含换行符
		//读完返回null
		FileReader fr=new FileReader("/Users/lanou/Desktop/Test/weixing.txt");
		BufferedReader br=new BufferedReader(fr);
		//读
		String string="";
		while ((string=br.readLine())!=null) {
			System.out.println(string);
			
		}
	}

  复制文件

public static void main(String[] args) throws IOException {
		FileReader fr=new FileReader("/Users/lanou/Desktop/Test/weixing.txt");
		BufferedReader br=new BufferedReader(fr);
		FileWriter fw=new FileWriter("/Users/lanou/Desktop/Test/dahai.txt");
		BufferedWriter bw=new BufferedWriter(fw);
		String string="";
		while ((string=br.readLine())!=null) {
			//写
			bw.write(string);		
			//换行(读出来字符串不带换行的)
			//复制文本会多一个换行 不影响你使用
			bw.newLine();
			//刷新
			bw.flush();
		}
		br.close();
		bw.close();				
	}

  Properties(双列集合) 继承自Hashtable

   该集合是唯一能和IO流产生关系的集合

private static void fun1() {
		Properties properties=new Properties();
		//添加数据(特有方法 只能添加字符串)
		properties.setProperty("name", "张三");
		properties.setProperty("age", "18");
		Set<Object> keySet = properties.keySet();	
		}		
	}

  读取方法(load()加载)

private static void fun2() throws FileNotFoundException, IOException {
		//读取文件 最终会把数据加载集合中
		Properties properties=new Properties();
		FileInputStream fis=new FileInputStream("/Users/lanou/Desktop/Test/asds.properties");
		//把数据加载到集合当中
		properties.load(fis);
		//关闭流资源
		fis.close();
		System.out.println(properties);
	}
  写入方法(store())
public static void main(String[] args) throws IOException {
		Properties properties=new Properties();
		//添加数据
		properties.setProperty("username","zhangsan");
		properties.setProperty("password","123456");
		//将集合中的数据 写入到文件中
		//参数2 添加注释(一般什么都不写)中文注释是乱码的
		FileOutputStream fos=new FileOutputStream("/Users/lanou/Desktop/Test/asds.properties");
		properties.store(fos, "haha");
		//关闭资源
		fos.close();
	}

  序列化和反序列化流

  序列化(Serialization):

          序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操作时所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或保存在文件、数据库里,并在需要时把该流读取出来重新构造一个相同的对象。


  序列化时,都会生成序列号是常量,这样就不会发生序列号不同异常

  注意:大多数的系统类,都实现了序列化接口,你只需要把你自定义的类在序列化的时候实现接口就行了

//写对象方法
	public static void writer() throws IOException {
		FileOutputStream fos=new FileOutputStream("/Users/lanou/Desktop/Test/asds.txt");
		//创建序列化流
		ObjectOutputStream oos=new ObjectOutputStream(fos);
		//序列化接口 Serializable 标识性接口
		//如果你这个类想进行序列化的 必须要实现该接口
		//Person 要实现该接口
		oos.writeObject(new Person("zhangsan",18));
		//关闭资源
		oos.close();
	}
	
	//读取的方法
	public static void read() throws IOException, ClassNotFoundException {
		FileInputStream fis=new FileInputStream("/Users/lanou/Desktop/Test/asds.txt");
		ObjectInputStream ois=new ObjectInputStream(fis);
		//读取对象时 需要按照你的class文件来读取
		//删除class测试
		Object object = ois.readObject();
		System.out.println(object);
		//关闭资源
		ois.close();
	}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值