JavaIO学习:字节流
JavaIO流之字节流
字节流
抽象基类:InputStream,OutputStream。
- 字节流可以操作任何数据。

注意:
- 字符流使用的数组是字符数组,char[] chs ;
- 字节流使用的数组是字节数组,byte[] bt ;
FileOutputStream fos=new FileOutputStream(“a.txt”);
fos.write("abcde"); //直接将数据写入到了目的地。
fos.close();//只关闭资源。
FileInputSteam fls=new FileInputStream("a.txt");
//fis.available();//获取关联的文件字节数。如果文件体积不大,可以这样操作。
byte[]buf=new byte[fis.available()];//创建一个刚刚好的缓冲区。//但是这有一个弊端,就是文件过大,大小超出Jvm的内容空间时,会内存溢出。
fis.read(buf);
System.out.println(new String(buf));
例子:
需求:copy一个图片。
BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("1.jpg"));
BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("2.jpg"));
int by=0;
while(by=bufis.read()!=-1){
bufos.write(by);
bufos.newLine();
}
bufis.close();
bufos.close();
小结:
目前学习的流对象:
- 字符流: FileReader FileWriter BuffereedReader BufferedWriter
- 字节流:FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream
补充:
1.字节流的read()方法读取的是一个字节。为什么返回的不是byte类型,而是int类型呢?
- 因为read方法读到末尾时返回的是-1,而在所操作的数据中很容易出现连续多个1的情况,而连续读到8个1,就是-1,导致读取会提前停止。所以将读到的一个字节提升为一个int类型的数值,但是只保留原字节,并在剩余二进制位补0。
具体操作是:byte&255 or byte&0xff
- 对于write方法,可以一次写入一个字节,但接收的是一个int类型数值。只写入该int类型的数值的最低一个字节(8位)。
- 简单说:read方法对读到的数据进行提升,write对操作的数据进行转换。
JavaIO学习:字节流的更多相关文章
- JavaIO学习笔记(五)
JavaIO前期准备 什么是同步 指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪 什么是异步 异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO ...
- JavaIO学习总结一
Java IO 输入输出 一.概念 Java中输入输出操作是以流的方式进行的,流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.控制台.网络)读入到内存中,形成了流,然后将这些流还 ...
- java-IO流-字节流-概述及分类、FileInputStream、FileOutputStream、available()方法、定义小数组、BufferedInputStream、BufferedOutputStream、flush和close方法的区别、流的标准处理异常代码
1.IO流概述及其分类 * 1.概念 * IO流用来处理设备之间的数据传输 * Java对数据的操作是通过流的方式 * Java用于操作流的类都在IO包中 * ...
- JavaIO学习:转换流
转换流 1.涉及到的类 InputStreamReader:将InputStream转换为Reader OutputStreamWriter:将Writer转换为OutputStream 2.构造器 ...
- JavaIO学习:字符流
JavaIO流之字符流 字符流 Reader InputStreamReader FileReader:专门用于处理文件的字符读取流对象. Writer OutputStreamWriter File ...
- javaio学习笔记-字符流类(1)
1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...
- javaio学习笔记-字符流类(2)
1.java.io包中的字符流类-FileReader和FileWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; FileReader ...
- JavaIO学习:序列化流
对象流 1.涉及到的类 ObjectInputStream 和 ObjectOutputStream 用于存储和读取基本数据类型数据或对象的处理流. 2.作用 ObjectOutputStream:内 ...
- JavaIO学习:打印流
打印流 打印流是输出信息最方便的类,注意包含字节打印流:PrintStream和字符打印流:PrintWriter. 打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符 ...
随机推荐
- 怎么进入bios设置界面,电脑如何进入BIOS进行设置,怎么进入BIOS的方法集合
怎么进入bios设置界面,电脑如何进入BIOS进行设置,怎么进入BIOS的方法集合 开机出现电脑商家图标时,按住F10键进入BIOS界面.进入BIOS界面一般都是开机后按<del,Esc,F1, ...
- iframe超出外层元素显示滚动条怎么办?
尝试把外层盒子滚动条样式隐藏,或者设为overflow:hidden等都不生效,突然发现iframe有这个属性的忘记用了!! <iframe frameborder="0" ...
- AutoLayout的使用
虽然苹果提供了AutoresizingMask的布局方式,这个方式局限性太大:只能解决父控件和子控件间的相对关系: 因此,推出了AutoLayout:苹果官方也是推荐开发者尽量使用autolayout ...
- Visual Studio Code 远程开发探秘
摘要: IDE新时代! 作者:SHUHARI 的博客 原文:Visual Studio Code 远程开发探秘 Fundebug按照原文要求转载,版权归原作者所有. 在以前的文章 有趣的项目 - 在浏 ...
- MySQL循环日期
DROP PROCEDURE IF EXISTS `insertManyDate`$$ CREATE DEFINER=`root`@`%` PROCEDURE `insertManyDate`(IN ...
- (七)OpenStack---M版---双节点搭建---Dashboard安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 1.安装并配置 2.重启apache和memcached服务 3.验证 4.在Web界面创建网络 ...
- toString的本质 以及String.valueOf()
Object可以用toString转为字符串. Object.toString(); 但char[]不行,得用valueOf. String.valueOf(char[]); 如果用toString, ...
- 201871020225-牟星源《面向对象程序设计(java)》第七周学习总结
201871020225-牟星源<面向对象程序设计(java)>第七周学习总结 博文正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu- ...
- nginx 缓存配置
nginx 缓存是可以将远程服务器上的内容缓存到本地,可以设置缓存大小,缓存时间,缓存目录等等 具体配置如下 proxy_cache_path /home/http/cache/ levels=: k ...
- zzDeep Learning Papers Translation(CV)
Deep Learning Papers Translation(CV) Image Classification AlexNetImageNet Classification with Deep C ...