Java PrintWriter和DataOutputStream之间的区别是什么?
我正在为android开发一个聊天室应用程序。我读了不同的教程;其中一些使用PrintWriter发送数据,另一些使用DataOutputStream。这两者有什么区别?哪个更适合聊天应用程序?来自java文档 允许应用程序以可移植的方式将原始Java数据类型写入输出流。然后,应用程序可以使用数据输入流将数据读回 将对象的格式化表示形式打印到文本输出流。此类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,对于原始字节,程序应该使用未编码的字节流 在一句话中,区别在于:Java PrintWriter和DataOutputStream之间的区别是什么?,java,android,chat,Java,Android,Chat,我正在为android开发一个聊天室应用程序。我读了不同的教程;其中一些使用PrintWriter发送数据,另一些使用DataOutputStream。这两者有什么区别?哪个更适合聊天应用程序?来自java文档 允许应用程序以可移植的方式将原始Java数据类型写入输出流。然后,应用程序可以使用数据输入流将数据读回 将对象的格式化表示形式打印到文本输出流。此类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,对于原始字节,程序应该使用未编码的字节流 在一句话中,区别在于: 输
输出流用于二进制数据。writer(包括PrintWriter)是用于文本数据的
DataOutputStream
和PrintWriter
都是java.io中的两个类
class DataOutputStream extends FilterOutputStream implements DataOutput {
}
Javadoc
说
“数据输出流允许应用程序以可移植的方式将原始Java数据类型写入输出流。然后,应用程序可以使用数据输入流将数据读回。”
将对象的格式化表示形式打印到文本输出流。此类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,对于原始字节,程序应该使用未编码的字节流
PrintWriter
将所有内容转换为Ascii格式。例如:
PrintWriter pw = new PrintWriter(new File("./test.txt"));
for (Integer word: words) {
pw.println(word);
}
在这段代码中,通过调用pw.printin(word)
;无论单词的类型是什么(这里是整数),程序都会将其转换为ASCII格式并存储。所以,当我们想要检索存储的数据并再次读取它时,程序必须执行另一种类型的操作,从文本更改为原始格式-这在时间效率方面是不好的!
例如,若那个单词是一个整数,那个么在将其存储到一个文件(现在是文本)中之后,程序在检索该单词时必须将其格式从字符串更改为整数
但是,DataOutPutStream
通过保持数据类型将数据存储到字节中,使一切变得更加简单。所以,当我们运行bellow块时,程序将整数存储为字节,当它想要检索时,它不需要任何类型的更改。它以整数形式存储,也以整数形式检索。所以,它要快得多
DataOutputStream dos = new DataOutputStream(
new FileOutputStream(new File("test2.txt")));
for (Integer word: words) {
dos.writeUTF(word);
}
dos.close();
当您谈到聊天应用程序时,您指的是写入屏幕还是通过网络发送数据?通过网络发送通信数据不是在屏幕上写入。哪个更适合聊天应用程序?否。
PrintWriter
和PrintStream
将包含您在网络编程中需要了解的异常。我两个都不用。如果需要字符,请使用BufferedWriter
和BufferedReader
。
DataOutputStream dos = new DataOutputStream(
new FileOutputStream(new File("test2.txt")));
for (Integer word: words) {
dos.writeUTF(word);
}
dos.close();