Java 重点 | IO 流中的数据流专属和标准输出流
作者:几分醉意.
- 2022-11-19 安徽
本文字数:2044 字
阅读完需:约 7 分钟

数据流专属
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
版权声明: 本文为 InfoQ 作者【几分醉意.】的原创文章。
原文链接:【http://xie.infoq.cn/article/ca1b945083becfbe22f36a8c9】。文章转载请联系作者。
几分醉意.
关注
还未添加个人签名 2022-10-22 加入
还未添加个人简介









评论