IO(Input Output)流__字节流
续:
------->>>>字节流
IntputStream OutputStream
需求:想要操作图片数据,就需要用到字节流。
读写操作:
FileOutputStream FileInputStream
<---写--->
FileOutputStream fos = new FileOutputStream("fos.txt");
fos.write("abcde".getBytes());
fos.close();
<---读--->
FileInputStream fis = new FileInputStream("fos.txt");
byte[] buf = new byte[fis.availabe()]; //定义一个刚刚好的缓冲区,不用再循环了。
fis.read(buf);
System.out.println(new String(buf));
fis.colse();
拷贝图片:
思路:1、用字节读取流对象和图片关联;
2、用字节写入流对象创建一个图片文件,用于存储获取到的图片数据;
3、通过循环读写,完成数据的存储
4、关闭资源
部分代码如下:
FileOutputStream fos = null; FileInputStream fis = null; try { fos = new FileOutputStream("Demo.bmp"); fis = new FileInputStream("DemoCopy.bmp"); byte[] buf = new byte[1024]; int len = 0; while((len = fis.read(buf)) != -1) { fos.write(buf, 0, len); } }catch() { throw new RuntimeException("复制文件失败"); } finally { try{ if(fis != null) fis.close(); }catch(IOException e) { throw new RuntimeException("读取关闭失败"); } try{ if(fos != null) fos.close(); }catch(IOException e) { throw new RuntimeException("写入关闭失败"); } }
字节流的缓存区:
演示mp3的复制,通过缓冲区。
BufferedOutputStream
BufferedInputStream
public static void copy() throws IOException {
BUfferedInputStream bufis = new BufferedInputStream(new FileInputStream("Demo.mp3"));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(DemoCopy.mp3));
int by = 0;
while((by = bufis.read()) != -1) {
bufos.write(by);
}
bufos.close(); bufis.close();
}
附加小练习:自定义一个缓冲区;
读取键盘录入:
System.out : 对应的标准输出设备, 控制台
System.in : 对于的标准输入设备: 键盘
需求:通过键盘录入数据,当录入一行数据后,就将该行数据进行打印; 如果录入的数据是over,那么停止录入。
InputStream in = Sytem.in;
StringBuilder sb = new StringBuilder();
int ch = 0; while(true) { int ch = in.read();
if(ch == '\r') cntinue;
if(ch == '\n') { String s = sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0, sb.length());
}
else
sb.append((char) ch);
sb.append((char) ch) ;
}
读取转换流:
//获取键盘录入对象。
InputStream in = System.in;
//将字节流对象转成字符流对象,使用转换流。 InputStreamReader
InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader
BufferedReader bufr = new BufferedReader(isr);
加强:BufferReader bufr =
new BufferReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine()) != null) {
System.out.println(line.toUpperCase());
}
bufr.close();
写入转换流:
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
While((line = bufr.readLine()) != null) {
if("over".equals(line)) {
break;
bufw.writer(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
IO(Input Output)流__字节流的更多相关文章
- IO(Input&Output)流の介绍
1.导读 对于设备之间的流动(即写入数据或读出数据),Java专门用Java.io包进行操作.这些数据的流动便是我们所说的数据的输入输出流(IO流). 2.数据流的处理:字节流和字符流 数据的基本单位 ...
- JAVA input/output 流层次关系图
在java中,input和output流种类繁多,那么它们之间是否有关系呢?答案是肯定的,其中使用到了设计模式,装饰模式 下图来自于HEAD FIRST 设计模式 装饰模式一章 下图来自网络博客:ht ...
- Java IO编程——字符流与字节流
在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...
- javaIO--数据流之IO流与字节流
0.IO流 0.1.IO(Input Output)流的概念 Java中将不同设备之间的数据传输抽象为“流”:Stream设备指的是:磁盘上的文件,网络连接,另一个主机等等 按流向分:输入流,输出流: ...
- IO流(字节流,字符流)
一,概述 IO流(input output):用来处理设备之间的数据. Java对数据的操作是通过流的对象. Java用于操作流的对象都在IO包中. 流是一组有顺序的,有起点和终点的字节集合,是对数据 ...
- JavaSE学习笔记(14)---File类和IO流(字节流和字符流)
JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...
- Java基础(八)——IO流1_字节流、字符流
一.概述 1.介绍 I/O是 Input/Output 的缩写,IO流用来处理设备之间的数据传输,如读/写文件,网络通讯等.Java对数据的操作是通过流的方式进行.java.io 包下提供了各种&qu ...
- java.io中流的操作:字节流、字符流
java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...
- 【JAVA IO流之字节流】
字节流部分和字符流部分的体系架构很相似,有四个基本流:InputStream.OutputStream.BufferedInputStream.BufferedOutputStream,其中,Inpu ...
随机推荐
- PHP-traits新特性详解
自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits. Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制.Trait 为了减少单继承语言的限制,使开发人 ...
- Python小杂点
1.函数调用 a = [] def fun(a): a.append(1) print (a) 这个时候输出的结果为[],如果想要出现1,需要先运行函数fun,然后在输出a 2.python方法 de ...
- Python的面向对象4
今天我们接着来聊聊继承! 那什么是继承呢? 新写的类是不必重新编写,只要从现有的类继承,就自动拥有了该类的所有功能,新类只需要编写现有类缺少的功能,可以复用已有的代码! python的继承的特点: 继 ...
- 将页面中指定表格的数据导入到Excel中
function AutoExcel(){ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象 var o ...
- asp.net core 认证及简单集群
众所周知,在Asp.net WebAPI中,认证是通过AuthenticationFilter过滤器实现的,我们通常的做法是自定义AuthenticationFilter,实现认证逻辑,认证通过,继续 ...
- 第 4 章 多例模式【Multition Pattern】
以下内容出自:24种设计模式介绍与6大设计原则 这种情况有没有?有!大点声,有没有? 有!,是,确实有,就出现在明朝,那三国期间的算不算,不算,各自称帝,各有各的地盘,国号不同.大家还记得那首诗< ...
- Servlet高级应用---Servlet与缓存
一]设置缓存文件的有效日期 重点方法: HttpServletRequest类: 1>String getRequest ...
- HDU 1394 Minimum Inversion Number(线段树的单点更新)
点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...
- 【网络流24题】No.8 机器人路径规划问题
[题意] 机器人 Rob 可在一个树状路径上自由移动. 给定树状路径 T 上的起点 s 和终点 t, 机器人 Rob 要从 s 运动到 t. 树状路径 T 上有若干可移动的障碍物. 由于路径狭窄, 任 ...
- Jquery UI dialog 传参
[一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3519318.html] $("#dialog").dialog({ aut ...