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 加入
还未添加个人简介
评论