🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 字节输出流 OutputStream此抽象类,是 表示输出字节流的所有类的超类.操作的数据都是字节 ,定义了输出字节流的基本共性功能方法.字节流比字符流还多了一个优点,不刷新(flush)是可以的,它会自动刷新. ## byte和char的关系 byte的表示范围是-128~127,char表示范围是0~65535.一个字节是8位二进制.中文在java中占用2个字符,3个字节. ## 实例 ~~~ InputStream inputStream = new FileInputStream("1.txt"); //你 int a = 0; byte[] bs = new byte[3]; while ((a = inputStream.read()) != -1) { System.out.println(a + ":" + (char) a); } ~~~ 结果, 可以看出"你" 这个汉字占用了3个字节,两个字符. ``` 228:ä 189:½ 160: ``` ## 输出实例 在不同的操作系统下,换行方式不同. windows:\r\n linux:\n mac:\r ~~~ //创建流,并且续写 FileOutputStream fileOutputStream = new FileOutputStream("1.txt", true); //写数据 fileOutputStream.write("hello world".getBytes()); fileOutputStream.write("\r\nhello world".getBytes()); //关闭流 fileOutputStream.close(); ~~~ ## 输入实例,一次读取一个字节 ~~~ //创建流,如果文件不存在直接抛出异常 File file = new File("1.txt"); if (file.exists()) { InputStream fileInputStream = new FileInputStream(file); //返回的是int类型的码值,每次只能读一个字节 int b = 0; //读取不到字节就等于-1 while ((b = fileInputStream.read()) != -1) { fileInputStream.read(); //将码值转成char类型 System.out.println((char) b); } fileInputStream.close(); } else { System.out.println("文件不存在"); } ~~~ ## 输入实例,一次读取一个字节数组 ~~~ //创建流,如果文件不存在直接抛出异常 File file = new File("1.txt"); if (file.exists()) { InputStream fileInputStream = new FileInputStream(file); //返回的是int类型的码值,每次只能读一个字节 byte[] bs = new byte[4]; //返回读取到的字节长度 int len = 0; while ((len = fileInputStream.read(bs)) != -1) { System.out.println(new String(bs, 0, len)); } fileInputStream.close(); } else { System.out.println("文件不存在"); } ~~~