2013-06-27 143 views
3

我正在为Android聊天室应用。我阅读不同的教程;其中一些使用PrintWriter发送数据,其中一些使用DataOutputStream。这两者有什么区别?哪一个更适合聊天应用?什么是为PrintWriter和DataOutputStream之间的区别是什么?

+0

当您谈论聊天应用程序时,您是指写信给屏幕或通过网络发送数据? – hexafraction

+0

发送通过网络进行通信的数据,而不是写在屏幕上。 – pooyan

+0

Javadoc的哪个部分不理解? – EJP

回答

10

从Java文档

DataOutputStream让应用程序写基本Java数据类型在便携式方式的输出流。然后应用程序可以使用一个数据输入流中读取的数据回。格式化对象的表示

PrintWriter打印到一个文本输出流。该类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,程序应使用未编码的字节流。

在一个句子的区别是:

OutputStreams都是为了二进制数据。作家(包括PrintWriter)用于文本数据

+0

用粗体字显示摘要;) – Sello

0

DataOutputStreamPrintWriter都是java.io中的两个类。

class DataOutputStream extends FilterOutputStream implements DataOutput { 
} 

Javadoc

“A数据输出流允许应用程序写基本Java数据类型到输出流中的可移植的方式。然后应用程序可以使用一个数据输入流中读取的数据早在。”

public class PrintWriter extends Writer { 
} 

打印格式化对象的表示到一个文本输出流。该类实现PrintStream中的所有打印方法。它不包含写入原始字节的方法,程序应使用未编码的字节流。

+0

哪个更适合聊天应用? – pooyan

+1

PrintWriter将为您工作 –

+0

编号'PrintWriter'和'PrintStream'将吞噬网络编程中需要了解的异常。我不会使用他们中的任何一个。如果你想要字符,可以使用'BufferedWriter'和'BufferedReader'。 – EJP

1

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(); 
相关问题