IO流初识

81 阅读2分钟

IO流体系

字节流

inputStream

outputStream

FileOutputStream

public class 换行和续写 {
    public static void main(String[] args) throws IOException {
        //1.创建对象
        FileOutputStream ff = new FileOutputStream("C:\\Users\\小胡\\Desktop\\123213.txt");
        //我们要加一长串的字符我们可以
        //先创建一个字符串

        //然后我们要加换行的文字的时候,
        //   再写出一个换行符就可以了
        //   windows:\r\n
        //   Linux: \n
        //   mac: \r
        //细节:
        //    在windows操作系统当中,java对回车和换行进行了优化
        //    虽然完整的是\r\n,但是我们写了其中之一之后,java也可以实现
        //    换行,因为java在底层会自动补全
        //建议:
        //    不要省略,最好写全

        //续写:如果想要续写,打开续写开关即可
        //开关位置,创建对象的第二个参数
        //默认false:表示关闭续写,此时创建对象会清空文件
        //手动传递true:表示打开续写,此时创建文件不会清空文件




        String s = "okokwodongle";
        byte arr [] = s.getBytes();
        ff.write(arr);

        //
        String warp = "\r\n";
        byte[] bytes = warp.getBytes();
        ff.write(bytes);

        String aaa = "666";
        byte[] bytes1 = aaa.getBytes();
        ff.write(bytes1);
        ff.close();

    }
}

FileInputStream

import java.awt.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class 字节输入流 {
    public static void main(String[] args) throws IOException {
        //字节输入流的细节:
        //1.创建字节输入流对象
        //     细节1:如果文件不存在,就直接报错
        //     java为什么会这么设计呢?
        //     输出流:不存在,创建
        //            把数据写到文件当中
        //     输入流:不存在,而是报错呢?
        //            数据在哪里?,数据在文件当中
        //            如果java创建输入流对象的时候,如果文件不存在,也创建。

        //程序中最重要的是:数据


        //写数据:
        //      1.一次读一个字节,读出来的数据在ASCII上对应的数字
        //      2.读到文件末尾了,read发明回复返回-1.


        FileInputStream aa = new FileInputStream("C:\Users\小胡\Desktop\123213.txt");
        int read = aa.read();
        System.out.println(read);
        aa.close();



        //循环读取

        //1.创建对象
        FileInputStream aaa = new FileInputStream("C:\Users\小胡\Desktop\123213.txt");
        int a ;
        //为什么这边要搞一个a
        //因为直接调用read的话,就调用两次了,每次都是从第二个开始
        //read:表示读取数据,而且是读取一个数据就移动一次指针
        while((a = aaa.read()) != -1){
            System.out.print((char)a);
        }
        aaa.close();


        //文件拷贝
        FileInputStream ab = new FileInputStream("C:\Users\小胡\Desktop\123213.txt");
        FileOutputStream abc = new FileOutputStream("C:\Users\小胡\Desktop\111111.txt");
        int b ;
        while((b = ab.read()) != -1){
            abc.write(b);
        }
        //这边的释放,有规则:先开的最后关闭
        abc.close();
        ab.close();
    }
}