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

  一、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. Guava的常用方法示例

    Guava Maven Dependency <dependency> <groupId>com.google.guava</groupId> <artifa ...

  2. Scrapy项目 - 源码工程 - 实现豆瓣 Top250 电影信息爬取的爬虫设计

    一.项目目录结构 spiders文件夹内包含doubanSpider.py文件,对于项目的构建以及结构逻辑,详见环境搭建篇. 二.项目源码 1.doubanSpider.py # -*- coding ...

  3. 报表统计——java实现查询某年某月每天数据,没数据补0

    一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.前提:提供的工具方法——获取某月有多少天 //通过年份和月份确定该月的 ...

  4. OKR群:为什么说每个程序员都应该有自己的个人OKR

    个人OKR OKR,即Object and Key Result,是IT大厂最近争相推广的目标管理工具,例如腾讯.百度和头条(字节跳动). 其实,OKR并不是仅仅只适用于公司和部门内部,我们个人也可以 ...

  5. python爬虫—— 抓取今日头条的街拍的妹子图

    AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 近期在学习获取j ...

  6. VS Code配置Go语言开发环境(建议使用goland)

    VS Code是微软开源的一款编辑器,插件系统十分的丰富.本文就介绍了如何使用VS Code搭建Go语言开发环境. VS Code配置Go语言开发环境 说在前面的话,Go语言是采用UTF8编码的,理论 ...

  7. Scala 学习笔记之集合(9) 集合常用操作汇总

    object CollectionDemo10 { def main(args: Array[String]): Unit = { var ls = List[Int](1, 2, 3) //向后增加 ...

  8. windows下将jar文件设置为系统服务

    jar文件的执行需要java环境,怎么配置环境相信不用说了 因为不想每次开机都手动启动一次程序,那么我们就需要把它配置成开机自启动的服务,下面就来讲一种方法 首先,我们知道jar文件的执行命令为 ja ...

  9. 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

    本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...

  10. json.dumps和json.loads

    概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json ...