摘要:知识点总结字节流知识点总结字节流在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。字节流主要操作类型数据,以数组为准,主要操作类是类和类。
Java知识点总结(JavaIO-字节流)
@(Java知识点总结)[Java, JavaIO]
[toc]
字节流在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。
字节流主要操作byte类型数据,以byte数组为准,主要操作类是 OutputStream 类和 InputStream 类。
输出写入数据,输入写出数据
字节输出流:OutputStream是整个IO包字节输出流的最大父类,定义如下:
public abstract class OutputStream implements Closeable, Flushable
从定义可以发现:
OutputStream是一个抽象类,必须要通过子类实例化对象,才能使用。
可以使用子类FileOutputStream,向上转型后,操作一个文件。
可以通过InputStream 从文件中把内容读取出来。
InputStream 类的定义如下: public abstract class InputStream extends Object implements Closeable
同OutputStream 类一样,InputStream 本身也是一个抽象类,必须依靠其子类,如果从文件中读取,使用子类FileInputStream。
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Demo03 { // 将字符串转化为byte[]进行输出 public static void test1() throws IOException { File file = new File("E:" + File.separator + "test.txt"); OutputStream fos = new FileOutputStream(file); String str = "Hello world!"; byte[] b = str.getBytes(); // 只能使用byte数组,所以将字符串转为byte数组 fos.write(b); fos.close(); } // 在文末追加新的内容,且一个字节一个字节的输出 public static void test2() throws IOException { File file = new File("E:" + File.separator + "test.txt"); OutputStream fos = new FileOutputStream(file, true); String str = " Hello world!"; byte[] b = str.getBytes(); // 只能使用byte数组,所以将字符串转为byte数组 for (int i = 0; i < b.length; i++) { fos.write(b[i]); } fos.close(); } // 读取数据 public static void test3() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); // byte[] b = new byte[1024]; //定义一个数组用来存放读取的数据 byte[] b = new byte[(int) file.length()]; // 根据文件的数据量,开辟指定大小的 byte 数组 int len = fis.read(b); // 读取内容到数组中 fis.close(); System.out.println("读取数据的长度" + len); // System.out.println("内容为:"+new String(b)); System.out.println("内容为:" + new String(b, 0, len)); // 把 byte 数组转为字符串输出 } // 使用循环,一个字节一个字节读取数据 public static void test4() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); byte[] b = new byte[(int) file.length()]; for (int i = 0; i < b.length; i++) { b[i] = (byte) fis.read(); } fis.close(); System.out.println("内容为:" + new String(b)); } // 如果不知道要输入的内容有多大,则使用是否读到文件末尾的方式来读取文件 public static void test5() throws IOException { File file = new File("E:" + File.separator + "test.txt"); InputStream fis = new FileInputStream(file); int len = 0; //用于记录读取数据的个数 byte[] b = new byte[1024]; int temp = 0; //接收读取的每一个内容 while((temp = fis.read()) != -1){ b[len] = (byte) temp; len ++; } fis.close(); System.out.println("内容为:" + new String(b,0,len)); } public static void main(String[] args) { try { test1(); test2(); test5(); } catch (IOException e) { e.printStackTrace(); } } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69163.html
摘要:使用字节流写入文件,如果没有关闭字节流操作,文件依然存在内容,说明字节流是操作文件本身的。字节流比字符流更好,使用更广泛。 Java知识点总结(JavaIO-字符流) @(Java知识点总结)[Java, JavaIO] [toc] 在程序中一个字符等于两个字节,那么 Java 提供了 Reader 和 Writer 两个专门操作字符流的类。 字符输出流:Writer 类定义如下: p...
摘要:知识点总结转换流知识点总结是的子类,将一个字符流的输出对象变为字节流的输出对象。将字节输出流转为字符输出流字节流转为字符流苹果将字节输入流转为字符输入流内容是 Java知识点总结(JavaIO-转换流) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...
摘要:缓冲输入流从被称为缓冲区的存储器区域读出数据仅当缓冲区是空时,本地输入才被调用。同样,缓冲输出流,将数据写入到缓存区,只有当缓冲区已满才调用本机输出。 :https://segmentfault.com/blog... 1.前言 前阵子休息天日常在寻找项目里不好的代码,看到了这样的一段代码: private Result sshSameExec(Session session,...
摘要:我们在前面已经提到的几种流就有它们的使用情境和和主要用于解决不限于纯文本的二进制文件的输入输出情境。同时,如果使用带有缓冲区的缓冲输入输出流的话会使得读写的效率更高,有助于更快地完成不限于纯文本的二进制文件的读写。 不同情境的流: 流的种类很多,针对不同的IO数据交换情景我们可以选择不同的流来完成任务。 我们在前面已经提到的几种流就有它们的使用情境: 1. FileInputStrea...
阅读 1060·2021-11-24 09:39
阅读 3590·2021-09-02 15:21
阅读 2129·2021-08-24 10:01
阅读 686·2021-08-19 10:55
阅读 2379·2019-08-30 15:55
阅读 1187·2019-08-30 14:16
阅读 2959·2019-08-29 15:17
阅读 3190·2019-08-29 13:53