蜗牛—Java基础之学习(四)

最近,学习了关于I/O的一些基础知识

只要是有XXXStream的都是一些字节流

XXXreader、XXXWriter 都是一些字符流

1、获取bin目录、实例化输出流和输入流、实例化StringBuffer用来存储数据,在进行输出。

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 如何获得项目中磁盘中的信息
		String path = AFileInputStreamDemo.class.getResource("/").getPath()
				.substring(1);
		String filePath = path + "readme.txt";
		System.out.println(filePath);
		try {
			FileInputStream fis = new FileInputStream(filePath);
			FileReader fr = new FileReader(filePath);
			int c = 0;
			StringBuffer sb = new StringBuffer();
			String info = "";
			while ((c = fr.read()) != -1) {
				sb.append((char) c);
			}

			// byte[] infoArr = new byte[1024];
			// while ((c = fis.read(infoArr, 0, infoArr.length)) != -1) {
			// String iString = new String(infoArr);
			// // infoArr = iString.getBytes(); 字符串与byte[]数组相互转换
			// sb.append(iString);
			// }

			System.out.println(sb.toString());
			fis.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

2、ObjectOutputStream/ObjectInputStream、、对实体进行输入输出

		// TODO Auto-generated method stub
		Student student = new Student("wjj", 22, 23.3);
		try {
			ObjectOutputStream oos = new ObjectOutputStream(
					new FileOutputStream("G:\\student.txt"));
			oos.writeObject(student);
			oos.close();

			ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
					"G:\\student.txt"));
			Student student2 = (Student) ois.readObject();
			System.out.println("姓名:" + student2.getName() + "\n学号"
					+ student2.getId() + "\n分数" + student2.getScore());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
3、IO链、就是在一个输入输出流嵌套一个其他流、使得读写更有效率

		// TODO Auto-generated method stub
		// String path = CDuXieZiFuLiu.class.getResource("/com/jereh/ch05/")
		// .getPath().substring(1);
		// path += "Theme.template";

		String path = CDuXieZiFuLiu.class.getResource("/").getPath()
				.substring(1);
		String filePath = path + "Theme.template";
		String desFilePath = path + "Theme.html";
		StringBuffer sb = new StringBuffer();
		int c = 0;
		try {
			FileReader fr = new FileReader(filePath);
			FileWriter fw = new FileWriter(desFilePath);
			// BufferedWriter bw = new BufferedWriter(fw);
			BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
			BufferedReader br = new BufferedReader(new FileReader(desFilePath));

			while ((c = br.read()) != -1) {
				sb.append((char) c);
			}
			String string = sb.toString();
			string = string.replace("{title}", "主题").replace("{desc}", "描述");
			// for (int i = 0; i < string.length(); i++) {
			// fw.write(string.charAt(i));
			// }

			// fw.write(string);
			bw.write(string);
			// bw.flush();
			// fw.close();
			bw.close();// 会执行flush()并且会关闭其他的书写流

			fr.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
4、InputStreamReader的用法,  就是把字节流转换为字符流来进行操作

		// TODO Auto-generated method stub
		InputStream is = FInputStreamReader.class
				.getResourceAsStream("readme.txt");
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		StringBuffer sb = new StringBuffer();
		int c;
		try {
			while ((c = br.read()) != -1) {
				sb.append((char) c);
			}
			br.close();
			System.out.println(sb.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	


最近学习IO的时候,遇到一个问题,不知道是小问题还是大问题,原因一直没查

在对象声明上不知道哪的问题,下面附图


上面运行后,list里面的值都是一样的

而下面,就是预期的结果。

最近比较忙,呵呵。过后自己查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值