字节流是以字节为单位来处理数据的,由于字节流不会对数据进行任何转换,因此用来处理二进制的数据。

  一、InputStream类与OutputStream类

  1.InputStream类是所有字节输入流的父类,它定义了操作输入流的各种方法。

  

  2.OutputStream类是所有字节输出流的父类,它定义了输出流的各种操作方法。

write(byte[] bytes)                     // 将byte[]数组中的数据写入到当前输出流
write(bytep[ bytes, int off, int len) // 将byte[]数组下标off开始的len长度的数据写入到当前输出流
flush() // 刷新当前输出流,并释放所有与当前输出流有关的系统资源
close() // 关闭当前输出流,并释放所有与当前输出流有关的系统资源
Abstract write(int b) // 写入一个byte数据到当前输出流

  二、FileInputStream类与FileOutputStream类

  1.FileInputStream类是InputStream类的子类。它实现了文件的读取,是文件字节输入流,适用于比较简单的文件读取,其所有方法都是从InputStream类继承并重写的。

  构造方法有两种:

  (1)FileInputStream(String filepath)

  (2)FileInputStream(File file)

  • 示例代码
package jun.iplab.fileinputstream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; public class FileInputStreamTest { public static void main(String[] args) {
File file = new File("D:\\FileTest\\", "FileTest.txt");
try {
byte[] bytes = new byte[512];
FileInputStream fis = new FileInputStream(file);
int rs = 0;
// read方法读取字节流,并返回实际读入的字节数,读到末尾一位会返回-1
while ((rs=fis.read(bytes, 0, 512))>0) {
for (int i = 0; i < rs; i++) {
byte b = bytes[i];
System.out.print(b + " ");
}
System.out.println();
// 将要解码的字节数组bytes解码成字符串常量
String s = new String(bytes, 0, rs);
System.out.println(s); System.out.println(bytes.length);
System.out.println(rs);
System.out.println(s.length());
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
  • 输出
83 97 121 32 72 101 108 108 111 126
Say Hello~
512
10
10

  2.FileOutputStream类是OutputStream类的子类。它实现了文件的写入,能够以字节形式写入文件中,该类的所有方法都是从OutputStream类继承并重写的。

  构造方法有两种

  (1)FileOutputStream(String filepath)

  (2)FileOutputStream(File file,Boolean b):如果是true表示追加,false表示覆盖

  • 示例代码
package jun.iplab.fileoutputstream;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; public class FileOutputStreamTest { public static void main(String[] args) {
int b;
File file = new File("D:\\FileTest\\FileOutputStream.txt");
byte[] bytes = new byte[512];
try {
if (!file.exists()) {
file.createNewFile();
}
// 将控制台的输入以字节形式存入字节数组bytes中,并且返回实际输入的字节总数
b = System.in.read(bytes);
// 构造一个FileOutputStream对象,并设置为追加模式
FileOutputStream fos = new FileOutputStream(file, true);
// 将bytes中的字节全部写到文件输出流中并输出
fos.write(bytes, 0, b);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Java基础(二十六)Java IO(3)字节流(Byte Stream)的更多相关文章

  1. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

  2. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  3. java基础第十六篇之多线程

    1:线程的概念 进程(任务):一个正在运行的程序 进程的调度:CPU来决定什么时候该运行哪个进程 (时间片轮流法) 线程在一个应用程序中,同时,有多个不同的执行路径,是进程中的实际运作单位. 好处是提 ...

  4. Java基础之十六 数组

    数组:可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变. 16.1 数组为什么特殊 数组与其他种类的容器之间的区别有三方面:效率,类型和保存基本类型的能力. 数组是一种效率 ...

  5. Java笔记(二十六)……IO流上 字节流与字符流

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  6. java基础(十九)IO流(二)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  7. java基础(十八)IO流(一)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  8. Java进阶(二十六)公司项目开发知识点回顾

    公司项目开发知识点回顾 前言 "拿来主义"在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪. 在一次实验过程中,需要实现数据库的CRUD操作.由于之前项目开发过程中, ...

  9. 夯实Java基础(二十五)——JDBC使用详解

    1.JDBC介绍 JDBC的全称是Java Data Base Connectivity(Java数据库连接).是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问(例如MyS ...

  10. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

随机推荐

  1. python实现感知机线性分类模型

    前言 感知器是分类的线性分类模型,其中输入为实例的特征向量,输出为实例的类别,取+1或-1的值作为正类或负类.感知器对应于输入空间中对输入特征进行分类的超平面,属于判别模型. 通过梯度下降使误分类的损 ...

  2. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

  3. java工作错误总结

    1.访问接口出现以下错误 com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.200.126 access service com. ...

  4. Centeos7搭建selenium+Chrome浏览器

    博主主要是用来更新爬虫Cookie 环境安装 python3 安装selenium pip3 install selenium 安装chrome浏览器+chromedriver驱动 一.配置yum源 ...

  5. Kubernetes 系列(一):本地k8s集群搭建

    我们需要做以下工作: (1)安装VMware,运行CentOs系统,一个做master,一个做node. (2)安装K8s. (3)安装docker和部分镜像会需要访问外网,所以你需要做些网络方面的准 ...

  6. Win10 安装配置 MongoDB 4.0 踩坑记

    redis 官方没有 Windows 版的,微软维护的已经好久没更新了,所以就在想着换成 MongoDB. 于是一趟被我复杂化的踩坑之旅就开始了,同时也记录一下,避免有人遇见跟我一样的问题. 首先在  ...

  7. 基于hash和pushState的网页前端路由实现

    客户端路由 对于客户端(通常为浏览器)来说,路由的映射函数通常是进行一些DOM的显示和隐藏操作.这样,当访问不同的路径的时候,会显示不同的页面组件.客户端路由最常见的有以下两种实现方案:* 基于Has ...

  8. jq方法写选项卡的基本原理以及三种方法

    使用jq写选项卡,告别了繁琐的循环以及命名规范 基本原理: 1.当某一个btn被选中时,将这个btn的背景颜色设为橘色,其余兄弟btn背景颜色设为空(none) 2.如果子div与btn的索引相同,就 ...

  9. Java匹马行天下之教你用学汉语式方法学编程语言

    Java匹马行天下之教你用学汉语式方法学编程语言 前言: 前段时间接连更新了带小白从入门到了解的几篇博客: <Java匹马行天下之编程常识知多少> <Java匹马行天下之走进编程的殿 ...

  10. Spring Boot 2.x 基础案例:整合Dubbo 2.7.3+Nacos1.1.3(配置中心)

    本文原创首发于公众号:Java技术干货 1.概述 本文将Nacos作为配置中心,实现配置外部化,动态更新.这样做的优点:不需要重启应用,便可以动态更新应用里的配置信息.在如今流行的微服务应用下,将应用 ...