数据流_小记
来源:互联网 发布:js 字段包含某些值 编辑:程序博客网 时间:2024/06/14 07:57
数据流:针对最底层的数据,进行最基本的字节字符数据的读写操作。
构造方法:
public DataInputStream(InputStream in);//基础的InputStraeam构建DataInputStreampublic DataOutputStream(OutputStream out);//基础的OutputStraeam构建DataOutputStream
写入字符串:
writeBytes(String S)字节writeChars(String S)字符writeUTF
ByteArrayInputStream和ByteArrayOutStream(重点)
内存操作流:针对内存的数据进行操作的,程序一结束,这些内存中的数据就消失掉了!
特点:针对小文件进行操作!(聊天室项目中使用它进行发送文件)
ByteArrayOutputStream:public ByteArrayOutputStream():创建默认的缓冲区大小的内存操作输出流(单位是字节)成员方法:public byte[] toByteArray()创建一个新分配的 byte 数组(将内存操作输出流对象转换成字节数组)void reset():重置内存操作输出流ByteArrayInputStream:内存操作输入流:public ByteArrayInputStream(byte[] buf):参数数一个字节数组(缓冲数组)
package Day19_DataInOutput;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;/** * @author Aoman_Hao */public class ByteArrayTest1 { public static void main(String[] args) throws IOException { // 创建一个新的字节数组输出流,缓冲区大小为默认大小(一字节8位) ByteArrayOutputStream bao = new ByteArrayOutputStream(); bao.write("hello".getBytes()); System.out.println(bao); bao.close();// close无定义,即此流可以不关闭 // 创建一个字节数组输入流 byte[] by = bao.toByteArray(); ByteArrayInputStream bai = new ByteArrayInputStream(by); int len = 0; while((len = bai.read())!=-1){ System.out.print((char)len); } bai.reset();//重置流 }}
处理流–隐藏了底层设备上节点流的差异,对外提供方便的输入输出方法,使用处理流包装节点流,程序通过处理流来执行输入输出功能,让节电流和底层的IO设备文件交互.
处理流的构造器参数不是物理节点,而是存在的流
打印流:
字节打印流:PrintStream
字符打印流:PrintWriter
* 打印流特点:1)在复制文件的,打印流不能操作数据源,只能操作目的地的数据(只能输出数据)2)打印流可以有自动刷新的功能3)打印流可以直接针对文本文件进行操作: * * 什么情况下是直接可以针对文本文件进行操作? * 查API的时候,看流中构造方法,只要构造方法的参数有File类或者是String类型,都可以针对文本文件进行操作 * FileInputStream * FileOutputStream * FileReader * FileWriter * * PrintWriter: * 构造方法: * public PrintWriter(String fileName)
package Day19_DataInOutput;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;/** * @author Aoman_Hao */public class PrintInOutput { public static void main(String[] args) { try( //使用PrintStream处理流包装了FileOutPutStream节点输出流 PrintStream ps = new PrintStream(new FileOutputStream("d:\\Java\\JavaTest\\Aoman_Hao.txt"))) { ps.print("aa"); } catch (IOException e) { e.printStackTrace(); } }}
使用处理流BufferedReader,BufferedWriter来复制文件的内容到另一个新文件
package Day19_DataInOutput;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/** * @author Aoman_Hao */public class BufferReadTest { public static void main(String[] args) { try( //复制文件 //用BufferReader处理流包装字符输入流FileReader BufferedReader br = new BufferedReader(new FileReader( "d:\\Java\\JavaTest\\Aoman_Hao.txt")); //用 BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\Java\\Aoman_5.txt")); ){ //使用BufferedReader中的特有功能读写操作 String line = null; while((line = br.readLine())!=null){ bw.write(line);//写数据 bw.newLine();//换行 bw.flush();//刷新流 } }catch (IOException e) { e.printStackTrace(); } }}
PrintWriter:有自动刷新功能:
* public PrintWriter(Writer out,boolean autoFlush)
* 第二个参数指定为true,则启动自动刷新
* PrintWriter pw = new PrintWriter(new FileWriter(“pw.txt”),true) ;
* 加入自动刷新功能并且在写数据的时候,使用println():换行
*
* println(“hello”)
相当于:
* pw.write(“”) ;
* pw.newLine() ;
* pw.flush() ;
PrintWriter自动刷新
package Day19_DataInOutput;import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;/** * @author Aoman_Hao */public class PrintWriterTest { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new FileReader( "d:\\Java\\JavaTest\\Aoman_Hao.txt")); //public PrintWriter(Writer out,boolean autoFlush)第二个参数指定为true,则启动自动刷新 PrintWriter pw = new PrintWriter(new FileWriter("d:\\Java\\Aoman_7.txt")); String str = null; while((str = br.readLine() )!=null){ pw.println(str); } pw.close(); br.close(); }}
system.in屏幕输出:
package Day19_DataInOutput;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * @author Aoman_Hao */public class SystemInOut { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("输入:"); String line = br.readLine(); System.out.println("输出:"+line); }}
使用BufferedReader完成了录入数据:
使该流封装字符转换输入流,然后使用字符转换输入流封装字节流
层层封装:PrintStream ps = System.out ;//写入一个分隔符:newLine()是BufferedWriter类中的方法//BufferedWriter bw = new BufferedWriter(ps) ;//将字节打印流转换成字符流OutputStreamWriter osw = new OutputStreamWriter(ps) ;//创建字符缓冲输出流对象BufferedWriter bw = new BufferedWriter(osw) ;*/
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); bw.write("aaa"); bw.newLine(); bw.close(); 输出:aaa
- 数据流_小记
- 数据流挖掘_数据流抽样
- 数据挖掘_数据流挖掘
- 正则表达式_小记
- 集合_小记
- 链表_小记
- 泛型_小记
- 处理流_小记
- 多线程_小记
- Lock同步_小记
- struts2的简介_小记
- 等待唤醒机制_小记
- 多线程2_补充_小记
- Beatles小记-分布式数据流分析框架(一)
- Beatles小记-分布式数据流分析框架(一)
- Beatles小记-分布式数据流分析框架(二)
- Beatles小记-分布式数据流分析框架(一)
- Beatles小记-分布式数据流分析框架(二)
- iOS 11.0之后,UIScrollView顶部空20像素
- 安卓智能地图开发与实施二十三:三维场景中的可视化
- 获取在接口或者类上定义的泛型类型
- 截取两个String字符串中间的字符串
- crypto++RSA数字签名
- 数据流_小记
- AES加密方式整理
- Markdown编辑之图片去水印
- DB2中的空值和NULL处理
- 升级到 Android Studio 3.0 + Gradle 4.1 遇到的一些坑及解决方案
- dubbo源码解析
- Dex文件格式
- stm32f103串口实现重映射功能
- Chip Factory(字典树,学会将路暂时删除)