java学习笔记4(IO流)

  Java的stream按方向可以分为:输出流,输入流;按操作可以分为字节流,字符流。字节流和字符流都有输入和输出两个方向

  • 字节流
  1. 字节输入流
    以字节读取文件内容,每次读取一个字节:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.io.*;
    import java.io.File;
    import java.io.FileInputStream;

    public class test3 {
    public static void main(String[] args)throws IOException{
    File file = new File("test.txt");
    FileInputStream fis = new FileInputStream(file);
    int b;
    while (( b = fis.read()) != -1){
    System.out.println((char)b);
    }
    fis.close();
    }
    }

    以字节读取文件内容,每次读取多个字节:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import java.io.*;
    import java.io.File;
    import java.io.FileInputStream;

    public class test3 {
    public static void main(String[] args)throws IOException{
    File file = new File("test.txt");
    FileInputStream fis = new FileInputStream(file);
    byte[] bys = new byte[1028];
    int len = 0;
    while (( len = fis.read(bys)) != -1){
    System.out.write(bys,0,len);
    }
    fis.close();
    }
    }
  2. 字节输出流

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.io.*;
    import java.io.File;

    public class test3 {
    public static void main(String[] args)throws IOException{
    File file = new File("test.txt");
    String s = "this is storm'blog";
    byte[] s1 = s.getBytes();
    FileOutputStream fos = new FileOutputStream(file,true);
    fos.write(s1);
    fos.close();
    }
    }
  • 字符输入流
    以字符为单位读取文件内容,在字节编码中,gbk格式一个中文站两个字节,utf-8 格式中一个中文占三个字节,所以在操作中文内容的时候,使用字符流比字节流更方便
  1. 字符流输入
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import java.io.*;
    import java.io.File;

    public class test3 {
    public static void main(String[] args)throws IOException{
    File file = new File("test.txt");
    FileInputStream fis = new FileInputStream(file);
    InputStreamReader ifr = new InputStreamReader(fis);
    char ch;
    ch = (char)ifr.read();
    System.out.println(ch);
    char[] chs = new char[1024];
    ifr.read(chs);
    System.out.println(chs);
    fis.close();
    ifr.close();
    }
    }
  2. 字符流输出
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.io.*;
    import java.io.File;

    public class test3 {
    public static void main(String[] args)throws IOException{
    File file = new File("test.txt");
    FileOutputStream fos = new FileOutputStream(file,true); // true 为缺省参数append的值,表示是否追加模式打开
    OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
    osw.write("你好");
    osw.close(); // 关闭流的时候应该先关闭字符输出流,再关闭文件输出流,否则先关闭文件输出流会抛io异常
    fos.close();

    }
    }
-------------本文结束感谢您的阅读-------------

本文标题:java学习笔记4(IO流)

文章作者:fengxi

发布时间:2019年01月15日 - 11:01

最后更新:2019年04月04日 - 21:04

原始链接:https://super-storm.github.io/2019/01/15/java学习笔记4(IO流)/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。