目录

一、IO流概述和分类

二、字节流写数据

三、字节流写数据的三种方式

四、字节流写数据的两个小问题


一、IO流概述和分类

IO流介绍:

● IO:输入/输出(Input/Output)

● 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输

IO流就是用来处理设备间数据传输问题的。常见的应用:文件复制;文件上传;文件下载

IO流的分类:

按照数据的流向:

■ 输入流:读数据

■ 输出流:写数据

按照数据类型来分:

■ 字节流

字节输入流

字节输出流

■ 字符流

字符输入流

字符输出流

IO流的使用场景:

■ 如果操作的是纯文本文件,优先使用字符流

■ 如果操作的是图片、视频、音频等二进制文件。优先使用字节流

■ 如果不确定文件类型,优先使用字节流。字节流是万能的流

二、字节流写数据

字节流抽象基类:

InputStream:这个抽象类是表示字节输入流的所有类的超类

OutputStream:这个抽象类是表示字节输出流的所有类的超类

子类名特点:子类名称都是以其父类名作为子类名的后缀

字节输出流:

FileOutputStream(String name):创建文件输出流以指定的名称写入文件

使用字节输出流写数据的步骤:

● 创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)

● 调用字节输出流对象的写数据方法

● 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

示例代码:

public class FileOutputStreamDemo01 { public static void main(String[] args) throws IOException { //创建字节输出流对象 //FileOutputStream(String name):创建文件输出流以指定的名称写入文件 FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt"); /* 做了三件事情: A:调用系统功能创建了文件 B:创建了字节输出流对象 C:让字节输出流对象指向创建好的文件 */ //void write(int b):将指定的字节写入此文件输出流 fos.write(97); //最后都要释放资源 //void close():关闭此文件输出流并释放与此流相关联的任何系统资源。 fos.close(); }
}

三、字节流写数据的三种方式

写数据的方法分类:

方法名 说明
void write(int b) 将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b) 将b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
void write(byte[] b,int off,int len) 将len字节从指定的字节数组开始,从偏移量off开发写入此文件输出流 一次写一个字节数组的部分数据

示例代码:

public class FileOutputStreamDemo02 {public static void main(String[] args) throws IOException {//FileOutputStream(String name):创建文件输出流以指定的名称写入文件 FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");//new File(name) // FileOutputStream fos = new FileOutputStream(new File("myByteStream\\fos.txt"));//FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件 File file = new File("myByteStream\\fos.txt");FileOutputStream fos2 = new FileOutputStream(file);//上两行代码合并FileOutputStream fos2 = new FileOutputStream(new File("myByteStream\\fos.txt"));//void write(int b):将指定的字节写入此文件输出流 fos.write(97);fos.write(98);fos.write(99);fos.write(100);fos.write(101);// void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流 byte[] bys = {97, 98, 99, 100, 101};byte[] getBytes ():返回字符串对应的字节数组byte[] bys = "abcde".getBytes();fos.write(bys);//void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从 偏移量off开始写入此文件输出流// fos.write(bys,0,bys.length); fos.write(bys, 1, 3);//释放资源 fos.close();}
}

四、字节流写数据的两个小问题

字节流写数据如何实现换行

windows:\r\n

linux:\n

mac:\r

字节流写数据如何实现追加写入

public FileOutputStream(String name,boolean append)

创建文件输出流以指定的名称写入文件。如果第二个参数为true,则字节将写入文件的末尾而不是开头

示例代码:

public class FileOutputStreamDemo03 {public static void main(String[] args) throws IOException {//创建字节输出流对象
//         FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt"); FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt",true);//写数据 for (int i = 0; i < 10; i++) {fos.write("hello".getBytes());fos.write("\r\n".getBytes());}//释放资源 fos.close();}
}

【Java基础】IO流概述分类、字节流写数据、字节流写数据的三种方式及写数据的两个小问题相关推荐

  1. Java基础IO流概述、字符流、字节流、流操作规律、File类、Properties类、打印流、序列流

    IO流:(Input Output)流 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的码表,获取对应的文字进行操作 简单说:字符流 = 字节流 + 编码表 字节流的两个顶层父 ...

  2. [Java基础]IO流概述和分类

  3. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  4. # Java基础——IO流

    Java基础--IO流 File类的使用(熟悉构造器和方法的使用) File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类的声明在java.io包下 文件和文件目录路径的抽象表示 ...

  5. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  6. Java基础IO流之字符流的使用

    ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤.IO流分为字节流和字符流,而上一篇文章我们学习了字节流(Java基础IO流之字符流的使用),这篇文章带大家一起来学习字符流吧.对文章中描述错误的希望大家积 ...

  7. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  8. Java基础—IO流

    第一讲   IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...

  9. Java基础-IO流

    目录 1.IO流概述 2.IO流概述 3.流的四大家族 4.FileInputStream 4.1.初步 4.2.循环读: 4.3.往byte数组中读 4.4.最终版 4.5.available(); ...

最新文章

  1. eclipse提示edit source lookup path的问题
  2. Java中AJAX工作原理是什么
  3. python post有随机字符串_Python 中的POST/GET包构建以及随机字符串的生成
  4. DID会固定年份吗_倍分法DID详解 (二):多时点 DID (渐进DID)
  5. vs2010运行c++程序时,控制台一闪而过的解决方案
  6. java json 合并_java中,怎么把两个jsonObject合并成一个?
  7. 数据至上的人工智能时代,哪些公开数据集最适合?
  8. 程序员垃圾简历长什么样?
  9. JEOL即日起推出ECZ Luminous全新高分辨率核磁共振系统
  10. 使用iperf测试网络性能
  11. mysql 谓语提前,谓语提前的倒装句:
  12. Matlab/Simulink中PMSM模型的反电动势系数和转矩系数
  13. 以太网交换机性能测试丢包的原因
  14. MCEN90008 FLUID DYNAMICS
  15. FZU 1021 飞船赛
  16. 微信小程序表格的实现(纯css 表格的实现)
  17. axi ps读写pl_Xilinx SDK 初学之——PS对PL寄存器的读写控制
  18. python webscoket(Autobahn)的使用
  19. 拓商:怎么解决物流影响店铺DSR评分?
  20. SaaS模式、技术与案例详解——第9章 SaaS平台基础组件分析与设计

热门文章

  1. 苹果手机的缺点,苹果手机六大“雷区”,你踩了几个?
  2. 微信小程序如何设置自定义tabBar
  3. 能不能解释一下什么是COP
  4. redis 分布式集群部署
  5. 人脸/物体识别,用 canvas 给图片画框(vue实现)
  6. 【优化算法】基于树种优化算法求解单目标优化问题附matlab代码
  7. 音频常用协议说明 IIS TDM PDM PCM SPDIF协议解析
  8. 网络信息安全软考笔记(1)
  9. “开心家园农场”今年大流行!
  10. 这写孩子对计算机游戏上瘾了,孩子游戏上瘾怎么办?