资讯专栏INFORMATION COLUMN

Java知识点总结(JavaIO-字节流)

BigTomato / 831人阅读

摘要:知识点总结字节流知识点总结字节流在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。字节流主要操作类型数据,以数组为准,主要操作类是类和类。

Java知识点总结(JavaIO-字节流)

@(Java知识点总结)[Java, JavaIO]

[toc]

字节流

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。

字节流主要操作byte类型数据,以byte数组为准,主要操作类是 OutputStream 类和 InputStream 类。

输出写入数据,输入写出数据

字节输出流:OutputStream

是整个IO包字节输出流的最大父类,定义如下:

public  abstract class OutputStream implements Closeable, Flushable

从定义可以发现:
OutputStream是一个抽象类,必须要通过子类实例化对象,才能使用。
可以使用子类FileOutputStream,向上转型后,操作一个文件。

字节输入流:InputStream

可以通过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知识点总结(JavaIO-字符流) @(Java知识点总结)[Java, JavaIO] [toc] 在程序中一个字符等于两个字节,那么 Java 提供了 Reader 和 Writer 两个专门操作字符流的类。 字符输出流:Writer 类定义如下: p...

    thekingisalwaysluc 评论0 收藏0
  • Java识点总结JavaIO-转换流)

    摘要:知识点总结转换流知识点总结是的子类,将一个字符流的输出对象变为字节流的输出对象。将字节输出流转为字符输出流字节流转为字符流苹果将字节输入流转为字符输入流内容是 Java知识点总结(JavaIO-转换流) @(Java知识点总结)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...

    luckyyulin 评论0 收藏0
  • 从一段代码谈起——浅谈JavaIO接口

    摘要:缓冲输入流从被称为缓冲区的存储器区域读出数据仅当缓冲区是空时,本地输入才被调用。同样,缓冲输出流,将数据写入到缓存区,只有当缓冲区已满才调用本机输出。 :https://segmentfault.com/blog... 1.前言 前阵子休息天日常在寻找项目里不好的代码,看到了这样的一段代码: private Result sshSameExec(Session session,...

    pkwenda 评论0 收藏0
  • JavaIO

    摘要:是字节流通向字符流的桥梁它使用指定的读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。为了达到最高效率,可要考虑在内包装。 JAVA缓冲区就是先读一些数据在内存中间或者先写一部分数据在内存中。比如写,不是每次写数据到磁盘, 而是先把数据写到内存中,等到内存的缓冲区满了再一次写入磁盘,减少磁盘访问。JAVA读取大文需要使用radomAcces...

    Fundebug 评论0 收藏0
  • JavaIO : 不同情境使用的流

    摘要:我们在前面已经提到的几种流就有它们的使用情境和和主要用于解决不限于纯文本的二进制文件的输入输出情境。同时,如果使用带有缓冲区的缓冲输入输出流的话会使得读写的效率更高,有助于更快地完成不限于纯文本的二进制文件的读写。 不同情境的流: 流的种类很多,针对不同的IO数据交换情景我们可以选择不同的流来完成任务。 我们在前面已经提到的几种流就有它们的使用情境: 1. FileInputStrea...

    yintaolaowanzi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<