写点什么

Java 重点 | IO 流中的数据流专属和标准输出流

作者:几分醉意.
  • 2022-11-19
    安徽
  • 本文字数:2044 字

    阅读完需:约 7 分钟

Java重点 | IO流中的数据流专属和标准输出流

数据流专属

DataOutputStream 写

java.io.DataOutputStream:数据专属的流。这个流可以将数据连同数据的类型一并写入文件。注意:这个文件不是普通文本文档。(这个文件使用记事本打不开。)


public class 数据流_写 {    public static void main(String[] args) throws IOException {        // 创建数据专属的字节输入流        DataOutputStream dos = new DataOutputStream(new FileOutputStream("JAVAse进阶/src/IO流/aa"));
// 写数据 byte b = 100; short s = 200; int i = 300; long l = 400; float f = 3.0F; double d = 3.14; boolean sex = false; char c = 'a'; // 写 dos.writeByte(b); // 把数据以及数据的类型一并写入到文件当中。 dos.writeShort(s); dos.writeInt(i); dos.writeLong(l); dos.writeFloat(f); dos.writeDouble(d); dos.writeBoolean(sex); dos.writeChar(c);
//刷新 dos.flush();
}
}
复制代码

DataInputStream 读

DataInputStream:数据字节输入流。DataOutputStream 写的文件,只能使用 DataInputStream 去读。并且读的时候你需要提前知道写入的顺序。读的顺序需要和写的顺序一致。才可以正常取出数据。


public class 数据流_读 {    public static void main(String[] args) throws IOException {        //创建对象        DataInputStream dis = new DataInputStream(new FileInputStream("JAVAse进阶/src/IO流/aa"));
//开始读 byte b = dis.readByte(); short s = dis.readShort(); int i = dis.readInt(); long l = dis.readLong(); float f = dis.readFloat(); double d = dis.readDouble(); boolean sex = dis.readBoolean(); char c = dis.readChar();
dis.close();
System.out.println(b); System.out.println(s); System.out.println(i); System.out.println(l); System.out.println(f); System.out.println(d); System.out.println(sex); System.out.println(c); }}
复制代码


输出结果:


标准输出流

     //联合起来写        System.out.println("hello world!");        //分开写        PrintStream ps =System.out;        ps.println("hello world!");
复制代码


标准输出流不需要手动 close()关闭。可以改变标准输出流的输出放向


public class PringtStream标准输出流 {    public static void main(String[] args) {        PrintStream printStream = null;        try {            //标准输出流不在指向控制台,指向log输出流文件            printStream = new PrintStream(new FileOutputStream("log输出流文件",true));            //修改输出方向,将输出方向修改到“log输出流文件”文件            System.setOut(printStream);            //下面输出的 ,就不会再控制台显示了,会写入到“log输出流文件”这个文件            System.out.println("你好");            System.out.println("iedsoafj");        } catch (FileNotFoundException e) {            e.printStackTrace();        }    }}
复制代码


执行结果

会发现没有输出到控制台,而是输出到了指定文件

利用标准输出流做一个记录日志工具


/*日志工具 */public class logger { /** * 记录日志的方法 * @param msg 发生了神什么事 */ public static void log(String msg) { //PrintStream printStream = null; try { //指向一个日志文件 PrintStream printStream = new PrintStream(new FileOutputStream("JAVAse进阶/src/IO流/输出流日志/log.txt",true));
//PrintStream printStream = new PrintStream(new FileOutputStream("JAVAse进阶/src/IO流/输出流日志/log.txt"),true);
//改变输出方向 System.setOut(printStream);
//日期当前时间 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String format = sdf.format(date);
//什么时间发生了什么事件 System.out.println(format+":"+msg); } catch (FileNotFoundException e) { e.printStackTrace(); } }}
复制代码


public class 测试日志方法 {    public static void main(String[] args) {        //测试工具类        logger.log("有灰正在编写java代码");        logger.log("有灰正在测试日志工具类");        logger.log("写一上午代码的有灰,眼睛好累,好模糊!");    }}
复制代码


运行后输出结果

会发现已经在文件中记录

发布于: 刚刚阅读数: 5
用户头像

几分醉意.

关注

还未添加个人签名 2022-10-22 加入

还未添加个人简介

评论

发布
暂无评论
Java重点 | IO流中的数据流专属和标准输出流_Java_几分醉意._InfoQ写作社区