码迷,mamicode.com
首页 > 其他好文 > 详细

I/O流任务

时间:2019-01-17 23:57:01      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:字符数组   读取文件   结合   rac   cep   输出   cat   数据存储   访问   

一、完成以下链接[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流任务

标签:字符数组   读取文件   结合   rac   cep   输出   cat   数据存储   访问   

原文地址:https://www.cnblogs.com/78tian/p/10056468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!