Java基础 -- 呕心沥血的JavaIO流篇笔记

}

}

class Person implements Serializable{

private String name;

private int age;



public Person(String name, int age) {

	this.name = name;

	this.age = age;

}



public String getName() {

	return name;

}



public void setName(String name) {

	this.name = name;

}



public int getAge() {

	return age;

}



public void setAge(int age) {

	this.age = age;

}

}




ObjectInputStream  

java.io.ObjectInputStream类,用于从一个文件中读取对象的信息



代码演示  

定义Person类,序列化,实例化三个对象放入集合中,将集合写入文件内,再从文件内读出输出在控制台



public class FileTest {

public static void main(String[] args) {

	ArrayList<Person> persons = new ArrayList<Person>();

	persons.add(new Person("张三", 23));

	persons.add(new Person("李四", 24));

	persons.add(new Person("王五", 26));

	

	try {

		OutputStream os = new FileOutputStream("C://Users//Desktop//d.txt");

		ObjectOutputStream oos = new ObjectOutputStream(os);

		//将对象集合写入文件内

		oos.writeObject(persons);

		

		InputStream is = new FileInputStream("C://Users//Desktop//d.txt");

		ObjectInputStream ois = new ObjectInputStream(is);

		//将集合对象从文件中读出

		ArrayList<Person> persons2 = (ArrayList<Person>) ois.readObject();

		//利用stream流遍历集合中内容

		persons2.stream().forEach(s	->{

			System.out.println(s.toString());

		});

	} catch (FileNotFoundException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	} catch (ClassNotFoundException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

	

}

}

class Person implements Serializable{

private String name;

private int age;



public Person(String name, int age) {

	this.name = name;

	this.age = age;

}



public String getName() {

	return name;

}



public void setName(String name) {

	this.name = name;

}



public int getAge() {

	return age;

}



public void setAge(int age) {

	this.age = age;

}



@Override

public String toString() {

	return "Person [name=" + name + ", age=" + age + "]";

}

}




### []( )IO流之字符流



字符流,就是一个字符一个字符的传输,不管中文,还是英文,通常用于文本文件的读写。



FileWriter  

java.io.FileWriter类,用于向文本文件中写入字符数据  

代码演示:  

利用字符流FileWriter向文件中写入数据



public class FileTest {

public static void main(String[] args) {

	try {

		FileWriter fw = new FileWriter("C://Users//Desktop//c.txt");

		fw.write("Hello China");

		System.out.println("写入成功~");

		//必须关闭流,否则会写不进去

		fw.close();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




FileReader  

java.io.FileReader类,用于从文本文件中读取字符数据



代码演示:  

从一个文件中读出内容,再输出读出的内容



public static void main(String[] args) {

	try {

		FileWriter fw = new FileWriter("C://Users//Desktop//c.txt");

		fw.write("Hello China");

		System.out.println("写入成功~");

		fw.close();

		FileReader fr = new FileReader("C://Users//Desktop//c.txt");

		while (true) {

			//一次读取一个字节,无法读取中文

			int i = fr.read();

			if (i == -1) {

				break;

			}

			System.out.print((char)i);

		}

		//必须关闭流,否则会写不进去

		fr.close();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




优化代码,可读取中文



public class FileTest {

public static void main(String[] args) {

	try {

		FileWriter fw = new FileWriter("C://Users//Desktop//c.txt");

		fw.write("Hello China,你好");

		System.out.println("写入成功~");

		fw.close();

		FileReader fr = new FileReader("C://Users//Desktop//c.txt");

		FileInputStream fis = new FileInputStream("C://Users//Desktop//c.txt");

		int len = fis.available();

		char[] cbuf = new char[len];

		int realLen = fr.read(cbuf);

		char[] cbuf2 = Arrays.copyOf(cbuf, realLen);

		System.out.println(Arrays.toString(cbuf2));

		//必须关闭流,否则会写不进去

		fr.close();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




BufferedReader  

缓冲读入流,把读出的数据先放入缓冲区内再写入文件中,这样可提升程序的速度



public class FileTest {

public static void main(String[] args) {

	try {

		Reader in = new FileReader("C://Users//Desktop//c.txt");

		BufferedReader br = new BufferedReader(in);

		String res = "";

		//一次读一行

		while ((res = br.readLine()) != null) {

			System.out.println(res);

		}

		in.close();

		br.close();

	} catch (FileNotFoundException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




BufferedWriter  

缓冲写入流,写入完毕需flash手动刷新清空缓冲区内容  

代码演示  

将内容写入文件中,再读出文件内容



public class FileTest {

public static void main(String[] args) {

	Writer writer = null;

	Reader reader = null;

	BufferedWriter bw = null;

	BufferedReader br = null;

	try {

		writer = new FileWriter("C://Users//Desktop//c.txt");

		reader = new FileReader("C://Users//Desktop//c.txt");

		bw = new BufferedWriter(writer);

		br = new BufferedReader(reader);

		bw.write("你好21345612324");

		bw.close();

		String str = "";

		while ((str = br.readLine()) != null) {

			System.out.println(str);

		}

		reader.close();

		br.close();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




Properties集合  

Properties类,表示一个属性集合,用来对键值对数据(key=value)进行读写操作



常用方法



> setProperty(String key,String value),向集合中添加数据  

> store,把集合中的数据持久化到文件中  

> load,把文件中的数据读取到内存中  

> getProperty(String key),从集合中根据key获取值



向文件中写入键值对数据,从文件中读出键值对数据  

代码演示



public class FileTest {

public static void main(String[] args) {

	Properties pro = new Properties();

	try {

		File file = new File("C://Users//Desktop//conf.properties");

		if (!file.exists()) {

			file.createNewFile();

		}

		FileReader fr = new FileReader("C://Users//Desktop//conf.properties");

		pro.load(fr);

		if (fr != null) {

			fr.close();

		}

		FileWriter fw = new FileWriter("C://Users//王会称//Desktop//conf.properties");

		pro.setProperty("name", "张三");

		pro.setProperty("sex", "男");

		pro.store(fw, "store success");

		if (fw != null) {

			fw.close();

		}

		System.out.println(pro);

	} catch (FileNotFoundException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	} catch (IOException e) {

		// TODO Auto-generated catch block

		e.printStackTrace();

	}

}

}




练习:  

使用Properties类,创建一个属性文件db.properties,有如下内容:  

host=localhost  

user=root  

pass=root  

port=3306  

然后再使用Properties类读取该属性文件,并输出



public class FileTest {

public static void main(String[] args) {

	Properties pro = new Properties();

	try {

		FileWriter fw = new FileWriter("C://Users//Desktop//db.properties");

		pro.setProperty("host", "localhost");

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

image

image

class FileTest {

public static void main(String[] args) {

	Properties pro = new Properties();

	try {

		FileWriter fw = new FileWriter("C://Users//Desktop//db.properties");

		pro.setProperty("host", "localhost");

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

[外链图片转存中…(img-7gosIdOo-1714348562002)]

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。

[外链图片转存中…(img-zIaSJioL-1714348562002)]

[外链图片转存中…(img-UFWsxGga-1714348562003)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值