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