I/O流任务

一、完成以下链接[https://www.cnblogs.com/zhrb/p/6834084.html]中的任务3、4、5。

3. 字符编码

主要讲解中文乱码问题,FileReader、InputStreamReader。

FileReader是InputStreamReader 类的子类,FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集參数的构造函数,所以FileReader仅仅能按系统默认的字符集来解码,然后在UTF-8 -> GBK-> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符;InputStreamReader读的是字节数组byte [ ],而FileReader读的是字符数组char [ ];

4. 字节流、二进制文件:DataInputStream, DataOutputStream、ObjectInputStream

//DataInputStream(二进制输入流)
public class DataInputStreamDemo { // 二进制流(读操作)

	public static void main(String[] args) {

		FileInputStream fis = null;

		DataInputStream dis = null;

		try {

			fis = new FileInputStream("cba.bin");

			dis = new DataInputStream(fis);

			System.out.println(dis.readUTF()); // 读取字符串

			System.out.println(dis.readInt()); // 读取整型

			System.out.println(dis.readBoolean()); // 读取bool类型

		} catch (FileNotFoundException e) {

			e.printStackTrace();

		} catch (IOException e) {

			e.printStackTrace();

		} finally {

			try {

				dis.close();

				fis.close();

			} catch (IOException e) {

				e.printStackTrace();
			}
		}
	}
}


//DataOutputStream二进制输出流
public class DataOutputStreamDemo {
	public static void main(String[] args) {
		FileOutputStream fos = null;
		DataOutputStream dos = null;
		try {
			fos = new FileOutputStream("cba.bin");// 创建字节流

			dos = new DataOutputStream(fos);// 创建二进制流

			dos.writeUTF("abc");// 将utf-8编码字符串写入到流中
			dos.writeInt(100);
			dos.writeBoolean(true);
			System.out.println("写入成功!");

		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		} finally {

			try {
				dos.close();// 关闭流
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}
//对象的输入流:  ObjectInputStream,把文件中的对象信息读取出来
 public static void readObject(File f) throws IOException, ClassNotFoundException
{
	 FileInputStream inputStream = new FileInputStream(f);//创建文件字节输出流对象
	 ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
	 User user = (User)objectInputStream.readObject();
	 System.out.println(user);
 }

5. 选做:RandomAccessFile

  • RandomAccessFile是用来访问那些保存数据记录的文件的,可以用seek( )方法来访问记录,并进行读写;

二、缓冲流(请自己设计实验进行测试)。尝试使用junit进行测试。

[http://www.maiziedu.com/wiki/java/buffered/]

三、尝试结合DAO模式与本章所学内容,为购物车系统设计数据存储相关的StudentDao接口及其相关实现类。

  • 还未实现。
原文地址:https://www.cnblogs.com/78tian/p/10056468.html