IO流“input”,“output”

一、IO流:存储和读取数据的解决方案

1.输入流:文件->程序

2.输出流:程序->文件

3.IO流按照操作文件的类型可以分为:

字节流:可以操作所有类型的文件

字符流:只可以操作纯文本文件

4.纯文本文件:用Windows系统自带的记事本打开并且能读懂的文件

例如:txt文件、md文件、xml文件、lrc文件等

(图片来自哔站黑马程序员)

二、FileOutputStream:操作本地文件的字节输出流,可以把程序中的数据写到本地文件中

书写步骤:

①创建字节输出流对象;

细节1:参数是字符串表示的路径或者是File对象都是可以的

细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的节san

细节3:如果文件已经存在,则会清空文件

②写数据;

细节1:write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符

③释放资源

细节:每次使用完流之后

练习:写出一段文字到本地文件中
package a01bytestreamdemo;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamDemo1 {
    public static void main(String[] args) throws IOException {
        //写出一段文字到本地文件中
        FileOutputStream fos=new FileOutputStream("Test\\a.txt");
        //2.写出数据
        fos.write(97);
        fos.close();
    }
}

运行结果:

三、 FileOutputStream写数据的三种方式

代码演示:

package a01bytestreamdemo;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamDemo2 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos=new FileOutputStream("Test\\a.txt");
//        fos.write(97);
//        fos.write(98);

//        byte[] bytes={97,98,99,100,101};
//        fos.write(bytes);

        byte[] bytes={97,98,99,100,101};
        //参数1:数组,参数2:起始索引,参数3:个数
        fos.write(bytes,1,2);
        fos.close();
    }
}

运行结果:

 

四、换行写和续写:

换行写:再次写出一个换行符就可以了

Windows:\r\n  ;   Linux: \n    ;  Mac: \r

细节:Windows操作系统中,Java对回车换行进行了优化,虽然完整的是\r\n,但是我们写其中一个\r或者\n,Java也可以实现换行,因为Java在底层会补全

代码演示:

package a01bytestreamdemo;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamDemo3 {
    public static void main(String[] args) throws IOException {
        //换行写
        FileOutputStream fos=new FileOutputStream("Test\\a.txt");
        String str="luhandashuaige";
        byte[] arr = str.getBytes();
        fos.write(arr);

        String wrap="\r\n";
        byte[] bytes=wrap.getBytes();
        fos.write(bytes);

        String str2="666";
        byte[] arr1 = str2.getBytes();
        fos.write(arr1);
        fos.close();
       
    }
}

运行结果:

续写:如果想要续写,打开续写开关就可以了

开关位置:创建对象的第二个参数

默认false:表示关闭续写,此时创建对象就会清空文件

手动传递true:表示打开续写,此时创建对象不会清空文件

代码演示:

package a01bytestreamdemo;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamDemo3 {
    public static void main(String[] args) throws IOException {
        //换行写
        FileOutputStream fos=new FileOutputStream("Test\\a.txt",true);
        String str="luhandashuaige";
        byte[] arr = str.getBytes();
        fos.write(arr);

        String wrap="\r\n";
        byte[] bytes=wrap.getBytes();
        fos.write(bytes);

        String str2="666";
        byte[] arr1 = str2.getBytes();
        fos.write(arr1);
        fos.close();
        //续写
    }
}

运行结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值