11、字符流、字节流
来源:互联网 发布:图文排版软件 编辑:程序博客网 时间:2024/06/06 11:41
流操作基本规律
1、明确源和目的
源:输入流。InputStream Reader
目的:输出流。 OutputStream Writer
2、操作的数据是否是纯文本。
是:字符流
不是:字节流
3、当体系明确后,在明确要使用哪个具体的对象
通过设备来进行区分:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
转换流什么使用。字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流
字符流:
字符流只用来操作文字数据
字符流两个基类:
Reader
FileReader 录入
BufferedReader
Writer
FileWriter 读取
bufferedWriter
close和flush的区别:flush刷新后,流可以继续使用,close刷新后,关闭流
FileWriter
package BytePakage;import java.io.*;public class FileWriterDemo { //需求:在硬盘上创建一个文件,并写入文字数据 public static void main(String[] args) throws IOException { //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 //而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖。 FileWriter file = new FileWriter("demo.text"); //调用write方法,将字符串写入流中 file.write("胡平燕"); //刷新流对象中的缓冲数据,将数据刷新到目的中 file.flush(); //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据, //将数据刷新到目的地中 //和flush的区别:flush刷新后,流可以继续使用,close刷新后,关闭流 file.close(); } }
BufferedWriter
在创建缓冲区之前,必须先有对象流
该缓冲区提供了一个跨平台的换行符 newLine()方法
package BytePakage; import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException; public class BufferedWriterDemo { public static void main(String[] args)throws IOException { FileWriter file = new FileWriter("E://text.txt"); //将对象流作为参数传递给缓冲区的构造函数即可 BufferedWriter bur = new BufferedWriter(file); for(int i=1; i<5;i++) { bur.write("胡平燕"+i); bur.newLine();//换行 bur.flush();//刷新流 } //关闭缓冲区,就是在关闭缓冲区的对象流 bur.close(); }}BufferedReader
package BytePakage; import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException; public class BufferedReaderDemo { public static void main(String[] args)throws IOException { FileReader fr = new FileReader("E://text.txt"); BufferedReader buf = new BufferedReader(fr); String line = null; while((line = buf.readLine()) != null) { System.out.println(line); } buf.close(); }}
FileReader
package BytePakage; import java.io.FileReader;import java.io.FileWriter;import java.io.IOException; public class CopyText { public static void main(String[] args) throws IOException { FileWriter file = null; FileReader fr3 = null; try { //创建目的地 file = new FileWriter("E://demo.java"); //与已有文件关联 fr3 = new FileReader("F://demo.txt"); char[] ch2 = new char[1024]; int len = 0; while((len = fr3.read(ch2))!=-1) { //将F盘文本文件Copy到E盘 file.write(ch2,0,len); } } catch (IOException e) { throw new RuntimeException("读取失败"); } finally { try { if(file != null) file.close(); if(fr3 != null) fr3.close(); } catch (IOException e) { throw new RuntimeException("读取失败"); } } }}
写入转换流
package BytePakage; import java.io.BufferedWriter;import java.io.OutputStream;import java.io.OutputStreamWriter; public class TransStreamDemo2 { public static void main(String[] args) { //键盘录入最常见写法 BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out)); String len = null; while((len = bufw.readLine()) != null) { if("over".equals(bufw)) break; bufw.write(len.toUpperCase()); bufw.newLine(); bufw.flush(); } bufw.close(); }}读取转换流
<span style="font-size:12px;color:#000000;">package BytePakage; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; public class TransStreamDemo { public static void main(String[] args) throws IOException { //获取键盘录入对象。 //InputStream in = System.in; //将字节流对象转成字符流对象,使用转换流。InputStreamReader //InputStreamReader irs = new InputStreamReader(in); //为了提高效率,将字符流进行缓冲区技术高效作用,使用BufferedReader BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String len = null; while((len = buf.readLine()) != null) { if("over".equals(len)) break; System.out.println(len.toUpperCase()); } }}</span>
InputStream
FileInputStream 录入
BufferedInputStream
OutputStream
FileOutputStream 读取
BufferedOutputStream
复制文件案例
package BytePakage; import java.io.*; public class CopyPic { public static void main(String[] args) throws Exception { FileInputStream fileI = null; FileOutputStream fileO = null; try { //获取硬盘文件 fileI = new FileInputStream("E://ed.JPEG"); //复制文件的对象 fileO = new FileOutputStream("E://ed2.JPEG"); byte[] buf = new byte[1024]; int len = 0; while((len = fileI.read(buf)) != -1) { fileO.write(buf,0,len); } } catch (Exception e) { throw new RuntimeException("复制文件失败"); } finally { try { if(fileI != null) fileI.close(); } catch (Exception e2) { throw new RuntimeException("读取文件失败"); } try { if(fileO != null) fileO.close(); } catch (Exception e2) { throw new RuntimeException("写入文件失败"); } } } }
复制MP3
package BytePakage; import java.io.*; public class CopyMp3 { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); copy(); long end = System.currentTimeMillis(); System.out.println((end-start)+"毫秒"); } public static void copy()throws IOException { BufferedInputStream bufInput = new BufferedInputStream(new FileInputStream("E://music1.mp3")); BufferedOutputStream bufOutput = new BufferedOutputStream(new FileOutputStream("E://music2.mp3")); int len = 0; while((len = bufInput.read()) != -1) { bufOutput.write(len); } bufInput.close(); bufOutput.close(); }}
0 0
- 11、字符流、字节流
- 字符流&字节流
- 字节流&字符流
- 字节流、字符流
- 字符流-->字节流
- 字符流字节流
- 字节流/字符流
- 字节流 字符流
- 字节流,字符流
- 字节流字符流
- 输入输出 字节,字符流
- 字节字符流
- 字节流转字符流
- JAVA字节字符流
- 字符字节流
- 6.13字符字节流
- 字节字符流笔记
- 字节流转字符流
- HTTP报文-->MVC
- 碎片和活动之间进行通信(获取faragment的实例)
- document.all用法
- html浏览器选择执行判断浏览器种类
- ssh登录按钮图片报错
- 11、字符流、字节流
- html-a标签
- iOS-Core-Animation-Advanced-Techniques(三)
- 数据存储
- 有意思的时钟显示
- 监控宝———开启智能监控新时代
- 天声人語 20150427
- 黑马程序员—IO流复制练习
- android Drawable setbounds()介绍