【Java】IO流

IO流

        IO流是用来读写数据的,流使用完就要释放资源,(1024*8)Java默认较好存储单元

        I  :intput 把硬盘文件中的数据读入到内存的过程,称:输入 负责

        O:output 把内存中的数据写出到硬盘文件的过程,称:输出 负责

IO流分类

 Windows文件不区分大小写

文件字节输入流:FileInputStream

        以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中

构造对象

读取方法

public class Demo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis1 = new FileInputStream(new File("day11\\abc.txt"));
        System.out.println((char) (fis1.read()));
        int b;//单字节循环读文本
        while ((b=fis1.read())!=-1){
            System.out.println((char)b);
        }
        fis1.close();

        System.out.println("------------");

        FileInputStream fis2 = new FileInputStream("day11\\DEF.txt");
        System.out.println((char)(fis2.read()));
        int len;//字节数组循环读文本
        byte[] bs = new byte[2];
        while ((len = fis2.read(bs))!=-1){
            System.out.println(new String(bs,0,len));
        }
        fis2.close();
    }
}

1.如何使用字节输入流读取中文内容输出不乱码呢?
        定义一个与文件一样大或者大于字节数组一次性读取完文件的全部字节

2.直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?
        如果文件过大,字节数组可能引起内存溢出

        一个字节一个字节读取效率较慢

        一个字节数组一个字节数组读取效率提升

        读取中文字符会乱码

文件字节输出流:FileOutputStream

        以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流

构造对象

写出方法

刷新关闭方法

public class Demo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos1 = new FileOutputStream(new File("day11\\dzz1.txt"));
        FileOutputStream fos1_1 = new FileOutputStream(new File("day11\\dzz1_1.txt"),true);
        FileOutputStream fos2 = new FileOutputStream("day11\\dzz2.txt");
        FileOutputStream fos2_2 = new FileOutputStream("day11\\dzz2_2.txt",true);

        fos1.write(65);//写入一个字节

        for (int i = 0 ; i < 10 ;i++) {
            fos1_1.write(97);
        }

        byte[] bs = {'a','b','c','d'};
        fos2.write(bs);//写入一个字节数组
        fos2.flush();
        fos2.write("\r\n".getBytes());
        fos2.write(bs,1,2);

        fos1.close();
        fos1_1.close();
        fos2.close();
        fos2_2.close();
    }
}

fos1.write("\r\

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值