Writer类与Reader类是以字符流传输数据,一个字符是两个字节

字符流除了是以字符方式(两个字节)传输数据外,另外一点与字节流不同的是字符流使用缓冲区,通过缓冲区再对文件进行操作。字节流字节对文件进行操作。使用字符流类时关闭字符流会强制将字符流缓冲区的类容输出,如果不想关闭也将字符流进行输出,使用Writer类的flush()方法。

Reader读取数据:

try {
			Reader reader = new FileReader(
					"D:\\cmz\\java\\JavaOOP6.0\\pet.template");
			char ch[] = new char[45];
			StringBuffer buffer = new StringBuffer();
			try {
				int length = reader.read(ch);
				while (length != -1) {
					buffer.append(ch);
					length = reader.read();
				}
				String str = " 您好!我的名字是{name},我是一只{type}.我的主人是{master}";
				System.out.println("替换前:" + str);
				str = str.replace("{name}", "欧欧");
				str = str.replace("{type}", "狗狗");
				str = str.replace("{master}", "程沐喆");
				System.out.println("替换后:" + str);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

使用writer操作数据:

String str = "您好!我的名字是欧欧,我是一只狗狗.我的主人是李伟";
		try {
			FileWriter file = new FileWriter("D:\\cmz\\java\\JavaOOP6.0\\pet.template");
			file.write(str);
			if (null!=file) {
				file.close();
				System.out.println("写入成功");
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}