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

  一、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. Github 入门1 (下载git , 连接本地库与github仓库)

    /* 本篇建立在以注册GitHub账号的前提下*/ (1)  下载 git  https://www.git-scm.com // win10 可以直接红色箭头标识的 Download 2.22.0 ...

  2. SPSS学习笔记参数检验—两独立样本t检验

    目的:利用来自两个总体的独立样本,推断两个总体的均值是否存在差异. 适用条件: (1)样本来自的总体应服从或近似服从正态分布: (2)两样本相互独立,两样本的样本量可以不等: 案例分析: 案例描述:评 ...

  3. Kafka 学习笔记之 删除Topic

    删除Topic 1. 显示所有Topic信息,testTopic是我们将要删除的Topic 2. 首先确认server.properties下面配置是否已经加上delete.topic.enable= ...

  4. 后端开发实践系列之四——简单可用的CQRS编码实践

    本文只讲了一件事情:软件模型中存在读模型和写模型之分,CQRS便为此而生. 20多年前,Bertrand Meyer在他的<Object-Oriented Software Constructi ...

  5. Node.js入门教程 第三篇 (模块及路由)

    Node.js的模块 Node.js的模块与传统面向对象的类(class)不完全相同.Node.js认为文件即模块,即一个文件是一个模块.单一文件一般只专注做一件事情,保证了代码的简洁性. 创建模块: ...

  6. net core WebApi——使用NPOI导入导出操作

    目录 前言 NPOI 测试 小结 @ 前言 时间过得好快,在之前升级到3.0之后,就感觉好久没再动过啥东西了,之前有问到Swagger的中文汉化,虽说我觉得这种操作的意义不是太大,也是多少鼓捣了下,其 ...

  7. 神奇的Java僵尸(defunct)进程问题排查过程

    现象描述 大概1个月多以前 在启动脚本中增加了tail -f 用来启动后追踪日志判断是否启动成功 后发现无法执行shutdown.sh(卡住 利用curl) 然后无奈使用kill -9 但通过ps - ...

  8. flask 微电影网站

    flask简介 轻量级web应用框架 WSGI工具箱才用Werkzeug 模版引擎则使用Jinja2 Flask使用BSD授权 1.virtualenv的使用 (1)创建虚拟环境:virtualenv ...

  9. 2.1实现简单基础的vector

    2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...

  10. 网络编程java

    网络编程 1.网络编程概述(1).C/S结构:指客户端与服务端结构,常见程序QQ;(2).B/S结构:指浏览器和服务器的结构;2.网络编程的三要素:*IP地址*端口号*通信协议(UDP/TCP) *I ...