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

  一、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. 从壹开始学习NetCore 45 ║ 终于解决了事务问题

    一.项目说明 哈喽,又来写文章了,原来放假可以这么爽,可以学习和分享,

  2. Spring MVC 梳理 - 四种HandlerMapping

    总结 (1)SpringMVC导入jar包,配置web.xml 这些都是基础的操作. (2)四种HandlerMapping:DefaultAnnotationHandlerMapping;Simpl ...

  3. JsonMessageView工具类

    前言 工具类 示例: 前端发送ajax请求 springmvc控制层接收请求并处理请求     前言: 在工作中使用springmvc web框架时常常会发送一个ajax请求,我们在控制层接收到请求并 ...

  4. 百万it资源百度网盘链接分享

    自己大量时间整理的优质资源,容量达3000多G,有需要的朋友可以微我,资源截图:  面试资料: 书籍类: 视频类: 以上只是部分资源,想要资源的亲请加微信咨询. 欢迎加微信咨询,请备注资源: 独乐乐不 ...

  5. 动态insert mybatis与ibatis

    mybatis: <insert id="insert" parameterType="hashMap"> INSERT INTO item < ...

  6. maven scope属性说明

    一.scope属性: 依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中. compile (编译) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编 ...

  7. mysql5.7初始密码及设置问题

    为了加强安全性,MySQL5.7为root用户随机生成了一个密码,如果安装的是RPM包,则默认是在/var/log/mysqld.log中. 可通过# grep "password" ...

  8. 浅谈Java的内存模型以及交互

    本文的内存模型只写虚拟机内存模型,物理机的不予描述. Java内存模型 在Java中,虚拟机将运行时区域分成6中,如下图:              程序计数器:用来记录当前线程执行到哪一步操作.在多 ...

  9. MongoDB 学习笔记之 地理空间索引入门

    地理空间索引: 地理空间索引,可用于处理基于地理位置的查询. Point:用于指定所在的具体位置,我们以restaurants为例: db.restaurants.insert({name: &quo ...

  10. 【mybatis】1mybatis下载、配置与初步使用

    一.mybatis历史: 额,学习一门新事物时了解一下它的历史能在脑中形成一个大致的轮廓...进入正题... mybatis以前叫做ibatis,ibatis是Apache旗下的产品,在2010年时g ...