64. 输出字节流(FileOutputStream)
IO分类:
按照数据流向分类:
输入流
输出流
按照处理的单位划分:
字节流:字节流读取的都是文件中的二进制数据,读取到的二进制数据不会经过任何处理
字符流:字符流读取的数据都是以字符为单位的,字符流也是读取的文件的二进制数据,只不过会把这些二进制数据转换成我们能识别的字符
字符流 = 字节流 + 解码
输出字节流::
------------------|OutputStream 所有输出字节流的基类 抽象类
-----------|FileOutputStream 向文件输出数据的输出字节流 throws FileNotFoundException
FileOutputStream的使用步骤:
1.找到目标文件
2.建立数据通道
3.把数据转换成字节数组写出
4.关闭资源
FileOutputStream的一些方法:
close() 关闭此文件输出流并释放与此流有关的所有系统资源。
write(int b) 将指定字节写入此文件输出流。
write(byte[] b) 将 b.length 个字节从指定 byte 数组写入此文件输出流中。
write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
注意:
1.write(byte b[])方法实际上是调用了 write(byte b[], int off, int len)方法
FileOutputStream要注意的细节:
1.使用FileOutputStream的时候,如果目标文件不存在,那么会创建目标文件对象,然后把数据写入
2.使用FileOutputStream的时候,如果目标文件已经存在,那么会清空目标文件的数据后再写入数据,如果需要再原数据的上追加数据,需要使用FileOutputStream(file,true)构造函数
3.使用FileOutputStream的write方法写数据的时候,虽然接受的是一个int类型的数据,但真正写出的只是一个字节的数据,只是把低八位的二进制数据写出,其他二十四位数据全部丢弃
- public class Demo2 {
- public static void main(String[] args) {
- //1.找到目标文件
- File file = new File("D:\\新建文件夹 (2)\\a.txt");
- System.out.println("文件的源文数据是:"+readFile(file));
- writeFile(file,"Hello World!");
- System.out.println("目前文件数据是:"+readFile(file));
- }
- //输出数据
- public static void writeFile(File file,String data) {
- FileOutputStream fileOutputStream = null;
- try{
- //2.建立通道(我的源文件数据:abc 追加数据)
- fileOutputStream = new FileOutputStream(file,true);
- //3.把要写入的数据转换成字符数组
- fileOutputStream.write(data.getBytes());
- }catch(IOException e) {
- throw new RuntimeException(e);
- }finally {
- //关闭资源
- try {
- fileOutputStream.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
- //输入数据
- public static String readFile(File file) {
- FileInputStream fileInputStream = null;
- String str = "";
- try {
- //建立数据通道
- fileInputStream = new FileInputStream(file);
- //创建缓冲字节数组
- byte[] buf = new byte[1024];
- int length = 0;
- while((length = fileInputStream.read(buf))!=-1) {
- //把字节数组转换成字符串返回
- str+=new String(buf,0,length);
- }
- } catch (IOException e) {
- throw new RuntimeException();
- }finally {
- try {
- fileInputStream.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- return str;
- }
- }
64. 输出字节流(FileOutputStream)的更多相关文章
- (16)IO流之输入字节流FileInputStream和输出字节流FielOutputStream
IO流技术解决的问题:设备与设备之间的传输问题,内存-->硬盘,硬盘-->内存,等等 IO流技术 如果按照数据的流向划分可以划分为:输入流和输出流 输入输出的标准是以程序为参考物的,如果流 ...
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
- Java 输入/输出——字节流和字符流
1.流的分类 (1)输入流和输出流(划分输入/输出流时是从程序运行所在内存的角度来考虑的) 输入流:只能从中读取数据,而不能向其写入数据. 输出流:只能向其写入数据,而不能从中读取数据. 输入流主要由 ...
- I/O(输入/输出)---字节流与字符流
流: 分为输入流和输出流,输入/输出是相对计算机内存来说的,数据输入到内存是输入流,数据从内存中输出是输出流. 流对象构造的时候会和数据源联系起来. 数据源分为:源数据源和目标数据源.输入流联系的是源 ...
- JAVA NIO中的Channels和Buffers
前言 Channels和Buffers是JAVA NIO里面比较重要的两个概念,NIO正是基于Channels和Buffers进行数据操作,且数据总是从Channels读取到Buffers,或者从Bu ...
- Java第四周学习日记(绪)
1.静态导入 作用:简化书写静态导入可以作用一个类的所有静态成员静态导入格式:import static 包名.类名静态导入要注意的事项:如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本 ...
- (18)IO流之字节缓冲路
缓冲流 BufferedInputStream 缓冲输入流 前面的练习告诉我们使用缓冲数组读取的效率更高,为了方便的大家的操作,sun 位大家提供了一个缓冲输入字节流对象,让我们可以更高效率的读取文件 ...
- Java使用对象流读取文件的问题
把对象进行持久化(把对象存到本地)要用到对象流进行处理,在用对象流处理过程中,在写对象和读对象时候遇到了很多问题,分享一下. 我们处理对象数据的时候不可能只处理一个对象,在系统运行的时候,可能产生的对 ...
- Java对象流的使用
为了让对象持久化(把对象存储到本地),可以使用java的对象流处理对象,把对象的内容写到本地存储的文件中,也可以从本地文件中读取出来.也就是常说的序列化和反序列化 主要用到了ObjectInputSt ...
随机推荐
- elasticsearch 6.x 安装search guard
前言 es之前版本一直无用户验证功能,不过官方有提供一x-pack,但是问题是付费.在es的6.3.2版本中,已经集成了x-pack,虽然es团队已经对x-pack开源,但是在该版本中如果需要使用到安 ...
- 职责链模式ChainOfResponsibility
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407114.html 1.定义 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合 ...
- 前端导出excel表格
前言近期项目有个新需求--将折线图表的数据加一个下载成excel表格的功能.以前下载功能都是调后台接口的,但是这个迭代,后台压力比较重,部分就交给了前端自己实现,下面就记录一下前端如何实现excel表 ...
- Vue开发环境的搭建及基本开发流程
1.下载并安装node,下载地址. 2.命令行运行以下命令安装npm淘宝镜像; npm install -g cnpm --registry=https://registry.npm.taobao.o ...
- nucleus学习
task的TCB结构: typedef struct TC_TCB_STRUCT { /* Standard thread information first. This information is ...
- c#获取MAC地址和IP地址
一获取mac地址 1.先添加system.management的dll组件2.添加引用 public string GetMACAddress(){string MoAddress = "& ...
- Linux系统之-文件系统,桌面环境
文件系统 文件类型普通文件,目录文件,连接文件,设备与设备文件,套接字,管道 普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [- ...
- ZROI week4
考试 前言 起晚了,大概10点才开始看T1,被别人问了T2有点懵逼. 和 这题看了就A掉了,感觉很像原题的样子,是我的错觉吗?? 串串 某神仙有个\(O(n)\)做法问了我一下,我当时也没怎么想(因为 ...
- idea使用 xml文件
如图 搜索template(模板) 点击加号后
- (转)使用OpenGL显示图像(七)Android OpenGLES2.0——纹理贴图之显示图片
转:http://blog.csdn.net/junzia/article/details/52842816 前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一 ...