一、打印流
实现将基本数据类型的数据格式转化为字符串输出。
打印流:PrintStream
和PrintWriter
- 提供了一系列重载的
print()
和println()
方法,用于多种数据类型的输出。 PrintStream
和PrintWriter
的输出不会抛出IOException
异常。PrintStream
和PrintWriter
有自动flush
功能。PrintStream
打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用PrintWriter
类。System.out
返回的是PrintStream
的实例。
二、打印流重定向输出到文件
使用PrintStream
创建打印输出流,将字节流重定向到文件。
@Test
public void test3(){
PrintStream ps = null;
try {
FileOutputStream fos = new FileOutputStream(new File("ascii.txt"));
// 创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
ps = new PrintStream(fos, true);
if (ps != null) {// 把标准输出流(控制台输出)改成文件
System.setOut(ps);
}
for (int i = 0; i <= 255; i++) { // 输出ASCII字符
System.out.print((char) i);
if (i % 50 == 0) { // 每50个数据一行
System.out.println(); // 换行
} }
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (ps != null) {
ps.close();
}
}
}
三、数据流
为了方便地操作Java语言的基本数据类型和String的数据,可以使用数据流。数据流有两个类(用于读取和写出基本数据类型、String类的数据) DataInputStream
和 DataOutputStream
,分别“套接”在 InputStream
和 OutputStream
子类的流上。
从将内存中的字符串、基本数据类型的变量写出到文件中。并再从文件中存储的基本数据类型变量和字符串读取到内存中,保存在变量中。
@Test
public void test4(){
//写入文件
DataOutputStream dataOutputStream = null;
try {
dataOutputStream = new DataOutputStream(new FileOutputStream("data.txt"));
dataOutputStream.writeUTF("aass");
dataOutputStream.flush();
dataOutputStream.writeInt(23);
dataOutputStream.flush();
dataOutputStream.writeBoolean(true);
dataOutputStream.flush();
dataOutputStream.writeChar('c');
dataOutputStream.flush();
dataOutputStream.writeDouble(2.3);
dataOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dataOutputStream != null)
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//从文件读出
DataInputStream dataInputStream = null;
try {
dataInputStream = new DataInputStream(new FileInputStream("data.txt"));
String name = dataInputStream.readUTF();
System.out.println(name);
int age = dataInputStream.readInt();
System.out.println(age);
boolean b = dataInputStream.readBoolean();
System.out.println(b);
char c = dataInputStream.readChar();
System.out.println(c);
double d = dataInputStream.readDouble();
System.out.println(d);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dataInputStream != null)
dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}