美文网首页
java基础-IO流

java基础-IO流

作者: 木木郡主 | 来源:发表于2020-11-23 21:03 被阅读0次
    IO流.png

    字节流

    FileOutputStream

    1、向文件中写入字符'a','b','c'

    //创建输出流对象,如果目的文件不存在,程序会自动创建(前提是文件父目录必须存在)
    OutputStream out = new FileOutputStream("d:/test/a.txt");
    //
    OutputStream out = new FileOutputStream("d:/test/a.txt",true);
    
    out.write(97);
    out.write(98);
    out.write(99);
    
    byte[] bytes = "abc".getBytes();
    out.write(bytes);
    
    byte[] bytes1 = "abcdefg".getBytes();
    out.write(bytes,0,3);
    
    FileInputStream

    读取文件内容

    int ch;
    while ((ch = in.read()) != -1) 
    {    System.out.println(ch);
    }
    
    byte[] bytes2 = new byte[3];
    int len;
    while ((len = in.read(bytes)) != -1) {   
        String str = new String(bytes,0,len);    
        System.out.println(str);
    }
    

    综合应用:复制文件
    需求,将a.txt中的内容复制到b.txt中

    核心步骤:

    方式一:一次读写一个字节

    InputStream in = new FileInputStream("d:/test/a.txt");
    OutputStream out = new FileOutputStream("d:/test/g.txt");
    int ch;
    while ((ch = in.read()) != -1) {
    out.write(ch);
     }
    in.close();
    out.close();
    

    方式二:一次读写一个字节数组

    InputStream in = new FileInputStream("d:/test/a.txt");
    OutputStream out = new FileOutputStream("d:/test/g.txt");
    byte[] bytes = new byte[1024];
    int len;
    while ((len = in.read(bytes)) != -1) {    
        String str = new String(bytes,0,len);
        System.out.println(str);
    }
    in.close;
    out.close;
    
    高效字节流

    BufferedInputStream

    BufferedInputStream

    字节缓冲流仅仅提供缓冲区,真正的底层的读写数据还是需要基本流对象进行操作,区别仅仅在定义对象时不同

    //创建字节缓冲流输入对象
    BufferedInputStream  bfin = new BufferedInputStream(new FileInputStream("d:/test/a.txt"));
    
    //创建字节缓冲流输出对象
    BufferedOutputStream bfout = new BufferedOutputStream(new FileOutputStream("d:/test/c.txt"));
    

    字符流

    普通字符流 FileReader 和FileWriter

    字符流操作和字节流操作相似,只是操作的是字符

    一次读取一个字符

    一次读取一个字符数组

    //用普通字符流把一个文件中的内容读取到另一个文件中
    FileReader fr = new FileReader("d:/test/a.txt");
    FileWriter fw = new FileWriter("d:/test/q.txt");
    char[] chars = new char[1024];
    int len;
    while ((len = fr.read(chars)) != -1) {    
    fw.write(chars,0,len);
    }
    fr.close();
    fw.close();
    
    高效字符流
    BufferedReader br = new BufferedReader(new FileReader("d:/test/a.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("d:/test/r.tex"));
    //写入内容
    bw.write("用于亮剑");
    bw.newLine();   // 换行
    bw.write("绝不后退");
    //读取-写入
    int ch = 0;
    while ((ch = br.read()) != -1) {   
        bw.write(ch);
    }
    //特有读取方法 一次读取一行
    String line = null;
    while((line = br.readLine()) != null) {   
        bw.write(line);
    }
    

    相关文章

      网友评论

          本文标题:java基础-IO流

          本文链接:https://www.haomeiwen.com/subject/tczviktx.html