|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 moc 于 2019-1-9 13:27 编辑
1、数据操作流
IO包中提供了两个与平台无关的数据操作流,可以读写基本数据类型的数据。
数据输出流: DataOutputStream
数据输入流: DataInputStream
① 通常按照一定格式将输入输出,再按照一定格式将数据输入;
② 要想使用数据输出流和输入流,则肯定要用户指定数据的保存格式;
③ 必须按指定的格式保存数据,才可以将数据输入流将数据读取进来。
- public static void main(String[] args) throws IOException {
- write(); // 写
- read(); // 读
- }
- private static void read() throws IOException {
- // 创建数据输入流对象
- DataInputStream dis = new DataInputStream(new FileInputStream("dos.txt"));
- byte b = dis.readByte(); // 读数据
- short s = dis.readShort();
- int i = dis.readInt();
- long l = dis.readLong();
- float f = dis.readFloat();
- double d = dis.readDouble();
- char c = dis.readChar();
- boolean bb = dis.readBoolean();
- dis.close(); // 释放资源
- }
- private static void write() throws IOException {
- // 创建数据输出流对象
- DataOutputStream dos = new DataOutputStream(new FileOutputStream("dos.txt"));
- dos.writeByte(10); // 写数据
- dos.writeShort(100);
- dos.writeInt(1000);
- dos.writeLong(10000);
- dos.writeFloat(12.34F);
- dos.writeDouble(12.56);
- dos.writeChar('a');
- dos.writeBoolean(true);
- dos.close(); // 释放资源
- }
复制代码 2、内存操作流
用于处理临时存储信息的,程序结束,数据就从内存中消失。
① 字节数组:
ByteArrayInputStream
ByteArrayOutputStream
② 字符数组:
CharArrayReader
CharArrayWriter
③ 字符串:
StringReader
StringWriter
注意: 跟文件读取不一样,内存操作流不要设置文件路径。
- // 写数据
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- for (int x = 0; x < 10; x++) {
- baos.write(("hello" + x).getBytes());
- }
- // 读数据
- byte[] bys = baos.toByteArray();
- ByteArrayInputStream bais = new ByteArrayInputStream(bys);
- int by = 0;
- while ((by = bais.read()) != -1) {
- System.out.print((char) by);
- }
复制代码 3、打印流
1. 字节流打印流 PrintStream
字符打印流 PrintWriter
2. 特点
① 只有写数据的,没有读取数据。只能操作目的地,不能操作数据源。
② 可以操作任意类型的数据。
③ 如果启动了自动刷新,能够自动刷新。
④ 该流是可以直接操作文本文件的。
3. 方法
1> 可以操作任意类型的数据。 print() --- println()
2> 启动自动刷新
PrintWriter pw = new PrintWriter(new FileWriter("xxx.txt"), true);
还应该调用println()的方法才可以; 这个时候不仅仅自动刷新了,还实现了数据的换行。
println()等价于于: bw.write(); + bw.newLine(); + bw.flush();
- PrintWriter pw = new PrintWriter(new FileWriter("pw2.txt"), true);
- pw.println("hello");
- pw.println(true);
- pw.println(100);
- pw.close();
复制代码 复制文件案例:
- // 封装数据源
- BufferedReader br = new BufferedReader(new FileReader("DataStreamDemo.java"));
- // 封装目的地
- PrintWriter pw = new PrintWriter(new FileWriter("Copy.java"), true);
- String line = null;
- while((line=br.readLine())!=null){
- pw.println(line);
- }
- pw.close();
- br.close();
复制代码 |
|