DataOutputStream和DataInputStream
DataOutputStream
数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
![](https://img.haomeiwen.com/i2378651/2d7af7740720ef5e.png)
''' try {
DataOutputStream out = new DataOutputStream(new FileOutputStream(fileName));
out.writeInt(1);
out.writeDouble(11.20);
out.writeUTF("test");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
'''
DataInputStream
数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
DataInputStream 对于多线程访问不一定是安全的。 线程安全是可选的,它由此类方法的使用者负责。
![](https://img.haomeiwen.com/i2378651/aa91ff9f4d067ac4.png)
实例:
'''
try {
DataInputStream in = new DataInputStream(new FileInputStream(fileName));
System.out.println(in.readInt() + "-" + in.readDouble() + "-" + in.readUTF());
in.close();
} catch (IOException e) {
e.printStackTrace();
}
'''
使用实例
'''
/**
* 操作数据流
*inputname 输入文件路径,outname 输出文件路径
*/
public static void operationData(String inputname, String outname) {
DataInputStream d = null;
try {
d = new DataInputStream(new FileInputStream(inputname));
DataOutputStream out = new DataOutputStream(new FileOutputStream(outname));
String count;
while ((count = d.readLine()) != null) {
String u = count.toUpperCase();
System.out.println(u);
out.writeBytes(u + " ,");
}
d.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
'''
ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream
ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。
关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
![](https://img.haomeiwen.com/i2378651/a9d0122ae2a31d71.png)
ByteArrayOutputStream
此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
![](https://img.haomeiwen.com/i2378651/973b1f93bb3a3724.png)
实例
'''
/**
* ByteArray 输入流和输出流的使用
*/
public static void startByteArray() throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(12);
while (outputStream.size() != 12) {
try {
outputStream.write(System.in.read());
} catch (IOException e) {
e.printStackTrace();
}
}
byte b[] = outputStream.toByteArray();
System.out.println("print the content + 打印内容");
for (int x = 0; x < b.length; x++) {
System.out.print((char) b[x] + " ");
}
System.out.println(" ");
int c;
ByteArrayInputStream input = new ByteArrayInputStream(b);
System.out.println("Converting characters to Upper case ");
for (int y = 0; y < 1; y++) {
while ((c = input.read()) != -1) {
System.out.println(Character.toUpperCase((char) c));
}
input.reset();
}
input.close();
}
'''
网友评论