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. 打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符 ...
随机推荐
- java--标准输入输出流
//读取键盘录入的数据写到a.txt //方式一 private static void method() throws IOException { //创建输入流对象 InputStream is ...
- 在 Docker 中已运行的 container 如何修改 run 时的 env
https://www.cnblogs.com/xiaouisme/p/9837221.html 首先不推荐这样做,如需修改配置,应删掉重新部署. 其次,可以进行如下操作(未测试,不知道仅重启 con ...
- ActiveMQ反序列化(CVE-2015-5254) && ActiveMQ任意文件写入 (CVE-2016-3088)
ActiveMQ 反序列化漏洞(CVE-2015-5254) 漏洞详情 ActiveMQ启动后,将监听61616和8161两个端口,其中消息在61616这个端口进行传递,使用ActiveMQ这个中间件 ...
- Android中设置状态栏颜色和字体颜色
1.在这里设置的状态栏背景为白色,字体为暗色 创建一个方法进行设置: protected void setStatusBar() { if (Build.VERSION.SDK_INT >= B ...
- Maven+SSM框架,实现单表简单的增删改查
目录 1.创建web Maven项目 2.创建java源码文件和resources资源文件 3.创建数据库配置文件:jdbc.properties 4.项目总体目录: 5.添加spring配置文件:a ...
- Unity Built-In Shader造成的运行时内存暴涨
在某个PC项目中使用了大量的材质球, 并且都使用了自带的Standard Shader, 在编辑器运行的时候, 一切良好, 运行内存只在1G左右, 然而在进行AssetBundle打包之后, EXE运 ...
- 201871010115 马北 《面向对象程序设计(java)》 第6-7周学习总结
项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...
- maven项目目录(二)
-- 项目目录 --src 项目中的所有资源 --main 存放开发代码和资源 --java 项目的java源代码 --resources 项目的资源文件,源代码之外的其他文件 --test 存放测试 ...
- Python进阶-V 迭代器(Iterator)、生成器(Generator)函数
一.迭代器 1.可循环的有哪些,即可用for语句或者while语句的数据类型有哪些? 字符串(str).列表(list).元组(tuple).字典(dic).集合(set).枚举类(enumerate ...
- 【oracle】lpad函数 作用(填充)