黑马程序员——IO(字节流)
来源:互联网 发布:智能手机截图软件 编辑:程序博客网 时间:2024/06/05 06:59
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
字节流:
InputStream(读)
OutputStream(写)
用途,不操作文本(需要码表转换),操作图片类型的字节文件。也就是操作字节数据。
字符流使用的是字符数组。
字节流使用的是字节数组。
字节流在没有使用缓冲区时,不需要刷新动作,读一个字节写一个字节。
int available() 返回目标文件字符大小。
byte[] buf = new byte[fis.available()];//定义一个刚刚好的缓冲区。注:数据不能太大。
byte[] buf = new byte[1024];//主要的缓冲区定义方式。
字节流读写操作示例:
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class InputStreamDemo {public static void main(String[] args) throws IOException {output();input();}//写数据public static void output() throws IOException{String str = "abcdefg";//定义写字符流FileOutputStream fos = new FileOutputStream("test.txt");fos.write(str.getBytes());fos.close();}//读数据public static void input() throws IOException{//定义读字符流FileInputStream fis = new FileInputStream("test.txt");byte[] by = new byte[1024];int len =0;while((len=fis.read(by))!=-1)System.out.print(new String(by,0,len));fis.close();}}
读的关键部分:
byte[] by = new byte[1024];//定义缓冲区
int len =0;
while((len=fis.read(by))!=-1)
System.out.print(new String(by,0,len));//将字节流转换从字符串打印
练习:复制图片
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class CopyPic {public static void main(String[] args) throws IOException {//写FileOutputStream fos = new FileOutputStream("阳懿1.jpg");//读FileInputStream fis = new FileInputStream("F:\\照片\\阳懿_11.jpg");byte[] buf = new byte[1024];int len1 = fis.available()/2;int len = 0;int sum = 0;while((len=fis.read(buf))!=-1){fos.write(buf, 0, len);sum +=len;if(sum>=len1)break;}fis.close();fos.close();}}
用BufferedInputStream和BufferedOutputStream复制mp3文件
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class CopyMp3 {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("F:\\音乐\\漂洋过海来看你.mp3"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("漂洋过海来看你.mp3"); BufferedOutputStream bos = new BufferedOutputStream(fos); long start = System.currentTimeMillis(); byte[] by = new byte[1024]; int len = 0; while((len = bis.read(by))!=-1) { bos.write(by,0,len); //bos.write(len); } bis.close(); bos.close(); long end = System.currentTimeMillis(); System.out.println(end - start + "毫秒"); }}
读取键盘录入。
import java.io.BufferedInputStream;import java.io.IOException;public class SystemInDemo {public static void main(String[] args) throws IOException {BufferedInputStream bi = null;byte[] by = new byte[1024];while(true){bi = new BufferedInputStream(System.in);bi.read(by);System.out.println(new String(by).toString());}}}
InputStreamReader:字节流通向字符流的桥梁。
构造时必须传入一个字节流。
简化形式:键盘录入。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
OutputStreamWriter:字符流转向字节流的桥梁。
字符输出到控制台。
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
流操作的基本规律:
流对象比较多,必须明确用哪个。
1、明确源和目的。
源:输入流。 InputStream Reader
目的:输出流。OutputStream Writer
2、操作的数据是否是纯文本。
是:字符流。
不是:字节流。
3、当体系明确后,在明确要使用哪个具体的对象。
通过设备来区分:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台。
扩展:
把录入的数据按照指定的编码表(utf-8),将数据存入文件中。FileWriter等流默认的码表为GBK。
OutputStreamWriter。可以用指定的码表写入文件。
转换流的由来,码表的选择。
System.setIn();改变System.in的指定设备。
System.setOut();改变System.out的指定设备。
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
- 黑马程序员——IO字节流
- 黑马程序员——io字节流
- 黑马程序员——io流(二)字节流
- 黑马程序员——IO流(字节流)
- 黑马程序员—IO流(字节流)
- 黑马程序员——IO(字节流)
- 黑马程序员——39,IO(字节流)
- 黑马程序员——IO流(IO流、字节流、字符流)
- 黑马程序员——IO流-字节流、字符流
- 黑马程序员——【Java】IO——字节流
- 黑马程序员——IO字符流与字节流
- 黑马程序员——IO流-字节流
- 黑马程序员——IO流字节流
- 黑马程序员——IO流3:字节流
- 黑马程序员——Java基础---IO流(字节流)
- 黑马程序员—IO流(字符流与字节流)
- 黑马程序员——Java IO—字节流
- 黑马程序员—IO流之字节流
- 【巧妙思维】【4-6】Problem F
- Struts环境搭建
- Android Studio使用远程依赖时下载不了jar包的解决方法
- 2012 蓝桥杯 预赛
- (2)Java开发图像裁剪系统
- 黑马程序员——IO(字节流)
- Java 线程池的原理与实现
- Python while 1 和 while True 速度比较
- OC类的分类和类的加载过程
- LeetCode Number of Islands Java版本
- php 基础语法
- unity3d中用四元数 Quaternion来对一个坐标点进行旋转的初步体会
- Python %s和%r的区别
- 学习历程