I/O输出流基础之FileOutputStream
OutputStream:是所有字节输出流的父类,其作用是:用这个流把网络数据(getOutputStream()),或者内存中的字节数组数据写到文件系统中文件系统(FileOutputStream)
由与 public abstract class OutputStream implements Closeable, Flushable{},所以此类不可以直接实例化,只能实例化它的子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream等.
故对OutputStream的操作实际是对其直接子类或者间接子类的操作
以FileOutputStream为例:class FileOutputStream extends OutputStream{.....}
构造描述:输出流对象的创建
public FileOututStream(File file) : 创建一个向指定File对象写入数据的文件输出流
public FileOututStream(File file,boolean append) : 创建一个向指定File对象写入数据的文件输出流, append等于true,以追加内容的方式
public FileOututStream(FileDescriptos fdObj) :创建一个向指定文件描述符处写入数据的文件输出流,该描述符表示一个到文件系统中的某个实际文件的现有链接
public FileOUTputStream(String name) : 创建一个向指定的名称文件中写入数据的文件输出流
public FileOUTputStream(String name,boolean append) : 创建一个向指定的名称文件中写入数据的文件输出流,append等于true,以追加内容的方式
实际上只有一个构造方法,那就是public FileOututStream(File file,boolean append),原因看源码,如下
public FileOututStream(String name,boolean append){
this(name != null?new File(name) :null,append);
}
public FileOututStream(File file,append){
this(file,append);
}
方法描述:
public void close():关闭这个流 并且释放这个流所有相关的资源
public void flush(): 刷新此输出流并强制写出任何已缓冲的字节,
public abstract void write(int b):将一个字节写入呲溜
public void write(byte b[]):相当于write(b, 0, b.length),将特定的字节数组数据写到这个流中 ublic void write(byte b[], int off, int len):将字节数组中指定的区间的字节数据写进此流中
实际上只有一个写方法,那就是public void write(int b),原因看源码,如下
public void write(byte b[]) throws IOException {
write(b, 0, b.length);
}
所以 public void write(byte b[])相当于 public void write(byte b[],int off ,int len),而write(byte b[], int off, int len)源码如下
public void write(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
for (int i = 0 ; i < len ; i++) {
write(b[off + i]);
}
}
所以 public void write(byte b[],int off,int len)相当于 public void write(int b)
总之:写方法其实只有一个,那就是write(int b),其余方法都是系统对这个方式的封装
使用示例:
FileOututStream out = new FileOututStream("D://e.txt"); 创建文件输出流对象
int acc_str = 97;
out .write(acc_str ); // 方式1:write(int i) -》 将a写到此流中
out .write("I like java".getBytes()); //方式2: write(byte[] b)
byte[] b = new byte[] {97,98,99,100,101,102};
out .write(b,0,2); // 方式3: write(byte[] b,int start,int num)
out .flush(); //将缓存中的数据强制写出到此流
out.close(); //关闭此流
I/O输出流基础之FileOutputStream的更多相关文章
- 一切皆为字节和字节输出流_OutputStream类&FileOutputStream类介绍
一切皆为字节 一切文件数据(文本.图片.视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此.所以,字节流可以传输任意文件数据.在操作流的时候,我们要时刻明确,无论使用什 ...
- Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制
FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_3_字节输出流_OutputStream类&FileOutputStream
都在IO包下 所有字节输出最顶层的父类 它是一个抽象类.abstract修饰的 一般这种类定义的都是所有字节流都可以使用公共的方法,
- Java-IO流之输入输出流基础示例
一.理论: 1.什么是输入输出? 输入输出的对象是数据,数据的存储区域是磁盘或者光盘等设备,我们知道还有一个存储数据的空间----内存,其中磁盘的速度比较慢,内存的速度比较快,把数据读入内存的动作称作 ...
- JAVA面试基础
JAVA相关基础知识1.面向对象的特征有哪些方面 ?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂 ...
- 常见Java基础知识(较长)
1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象, ...
- java基础面试题(转)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- java面试题及答案(基础题122道,代码题19道)
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- java基础知识4
58.线程的基本概念.线程的基本状态以及状态之间的关系线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行.就绪.挂 ...
随机推荐
- 基于SpringBoot从零构建博客网站 - 整合lombok和mybatis-plus提高开发效率
在上一章节中<技术选型和整合开发环境>,确定了开发的技术,但是如果直接这样用的话,可能开发效率会不高,为了提高开发的效率,这里再整合lombok和mybatis-plus两个组件. 1.l ...
- 关于WebSocket需要知道
WebSocket 概念 WebSocket是再单个TCP连接上进行双工通讯的协议,仅需要通过一次握手两个之间就可以创建持久性的连接,进行双向数据传输.WebSocket 是HTML5新增加的协议. ...
- 用C语言做一个横板过关类型的控制台游戏
前言:本教程是写给刚学会C语言基本语法不久的新生们. 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发. 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游 ...
- asp.net core 系列之webapi集成Dapper的简单操作教程
Dapper也是是一种ORM框架 这里记录下,使用ASP.NET 集成 Dapper 的过程,方便自己查看 至于Dapper的特性以及操作可以参考Dapper官方文档 1.创建数据库相关 在Sql S ...
- Web前后端分离
第一篇博客:见谅 用自己的通俗语言讲web工程的前后端分离: 只是从自己的角度去分析,我眼中的前后端分离(可能不对) 首先要明白我们服务器和浏览器之前传输和接受的是什么: 静态文件(html,css, ...
- JAVA设计模式之简单粗暴学建造者模式
文章由浅入深,先用简单例子说明建造者,然后分析模式的优缺点,最后结合优秀开源框架Mybatis,说明该模式的用处. 1.先定义一个机器人模型 package com.jstao.model; publ ...
- fab 菜单实现—圆形、半圆、扇形、直线、射线
前段时间记录一下fab 菜单实现之前传-钟表表盘,今天终于弄正文了. 本文基于上篇文章的布局方式和位置计算,并参考35 Cool Floating Action Button Animations(h ...
- openlayers4 入门开发系列之地图标绘篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- 解决小米手机USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED
今天,直接用AS在小米手机上运行安装的时候总是报错:INSTALL_FAILED_USER_RESTRICTED,于是乎,通过以下方式解决: 在开发者选项将USB安装打开,然后,哈,解决了.记录一下.
- iTop软件功能分析以及优缺点比较
iTop软件功能分析以及优缺点比较 iTop对标文档 1. 概述 2. CMDB 3. 主要功能模块 3.1 配置管理(Configuration Managment) 3.2 用户请求管理(Help ...