马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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();
|