I/O流任务

Posted 78tian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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接口及其相关实现类。

  • 还未实现。

以上是关于I/O流任务的主要内容,如果未能解决你的问题,请参考以下文章

java I/O流基础(知识+代码示例)

java I/O流基础(知识+代码示例)

Java I/O流详解与应用

2018-2019学年第一学期Java课设--魔塔

I/O流

笔记:I/O流-文件操作