Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter和DataOutputStream之间的区别是什么?_Java_Android_Chat - Fatal编程技术网

Java PrintWriter和DataOutputStream之间的区别是什么?

Java PrintWriter和DataOutputStream之间的区别是什么?,java,android,chat,Java,Android,Chat,我正在为android开发一个聊天室应用程序。我读了不同的教程;其中一些使用PrintWriter发送数据,另一些使用DataOutputStream。这两者有什么区别?哪个更适合聊天应用程序?来自java文档 允许应用程序以可移植的方式将原始Java数据类型写入输出流。然后,应用程序可以使用数据输入流将数据读回 将对象的格式化表示形式打印到文本输出流。此类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,对于原始字节,程序应该使用未编码的字节流 在一句话中,区别在于: 输

我正在为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();