鱼C论坛

 找回密码
 立即注册
查看: 2808|回复: 0

[学习笔记] Java-027 IO流之数据、内存、打印流

[复制链接]
发表于 2019-1-9 13:27:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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();

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-11 05:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表