初识io流

1.io流就是存储和读取数据的解决方案
i:input o:output
2.iOS流用于读写数据
3.io流按流的方向分为两种,一种是输入流,也就是读取,一种是输出流,也就是写出。
按照操作文件类型也可以分为两种,一种是字节流(可以弄所有类型的文件),一种是字符流(只可以纯文本文件)。纯文本文件:用windows自带的记事本打开能读懂的文件。
iO流分为两种,一种是字节流,字节流又分为两种:1.inputStream字节输入流。2.outputStream字节输出流。字符流也分为两种:Reader字符输入流,Writer字符输出流。
FileOutputStream文件输出,操作本地文件的字节输出流,可以把程序中的数据写到本地文件中,
书写步骤:1.创建字节输出流对象;2.写数据;3.释放资源。
我写了一个代码,以供大家和我进行理解

public class Demo1 {
    public static void main(String[] args) throws  Exception {
        //创建对象
        FileOutputStream stream=new FileOutputStream("Game\\a.txt");
        //写出数据
        stream.write(98);
        //3.释放资源
        stream.close();
    }
}

此时,我们看a文件,a文件里多出了一个b,说明我们的代码没有问题,在代码中写了啥,那么文件中就多了啥。
字节输出流的细节
1.创建字符串表示的路径或者是File的对象都是可以的
2.文件不存在会创建一个新的文件,但是要保证父级路径是存在的。
3.如果文件已经存在,那么,会清空文件
写出数据的小细节
1.write方法的参数是整数,但是实际上是写到本地文件中的都是整数在ASCII上对应的字符
释放资源的小细节
每次使用完之后都要释放资源
void write(int b);一次写一个字节数据
void write(byte[] b);一次写一个字节数组数据
void write (byte[] b,int off,int len)一次写一个字节数组的部分数据。
前两个方法没啥好说的,大家见名知意,第三个数组复杂一些
第一个参数指的是数组,第二个参数指的是起始索引,第三个参数指的是个数。
我写了一串代码,供大家理解,如下:

public class Demo1 {
    public static void main(String[] args) throws  Exception {
        //创建对象
        FileOutputStream stream=new FileOutputStream("Game\\a.txt");
        byte bytes[]={97,98,99,100,101};
        //写出数据
     stream.write(bytes,1,3);
        //3.释放资源
        stream.close();
    }
}

这时,书写的格式中的意思就是指在bytes这个数组中,从1索引开始,写3个字节到文件中去,所以,最后的运行结果是bcd。
接下来,介绍写出数据的两个小问题:1.换行写 2.续写,不清空。
面对以上两个问题,我先介绍一个方法,就是getBytes方法,他的参数是字符串类型的,而且返回的是bytes类型的,非常方便,我们只需定义一个字符串,然后调用这个方法就可以了。
我写了如下代码:

public class Demo1 {
    public static void main(String[] args) throws  Exception {
        //创建对象
        FileOutputStream stream=new FileOutputStream("Game\\a.txt");
        String str="zhangwenchao666";
        byte b[]=str.getBytes();
        System.out.println(b.toString());
        //写出数据
     stream.write(str.getBytes());
        stream.close();
    }
}

非常方便。
接下来,就开始我们的第一个问题,如果需要换行,应该怎么办
其实很简单,只需要在两个write方法之间写一个换行符就可以了,如下:

public class Demo1 {
    public static void main(String[] args) throws  Exception {
        //创建对象
        FileOutputStream stream=new FileOutputStream("Game\\a.txt");
        String str="zhangwenchao";
        String str2="666";
        String str3="\r\n";
        //byte b[]=str.getBytes();
        //System.out.println(b.toString());
        //写出数据
     stream.write(str.getBytes());
     stream.write(str3.getBytes());

     stream.write(str2.getBytes());
        stream.close();
    }
}

这样就可以了,但是换行符根据操作系统的不一样而不一样,Windows的是/r/n,Linux的是/n,苹果mac的是/r。
那么,第二个问题,续写,我们应该怎么解决呢,其实,在创建对象时,参数不仅仅是路径,后面还会有一个参数,是boolean类型的参数,默认的是false,我们只需要手动将ture传进去就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值