正如我目前初步理解的那样:
DataInputStream
是一个InputStream
子类,因此它读取和写入字节。如果您正在读取字节并且您知道它们都将是int
s 或其他一些原始数据类型,那么您可以使用 将这些byte
s 直接读入原始数据类型DataInputStream
。
- 问题:在读取内容之前,您是否需要知道正在读取的内容的类型(int、string 等)?整个文件是否需要由一种原始类型组成?
我遇到的问题是:为什么不使用InputStreamReader
环绕InputStream
的字节数据?使用这种方法,您仍在读取字节,然后将它们转换为表示字符的整数。哪些整数代表哪些字符取决于指定的字符集,例如“UTF-8”。
- 问题:在什么情况下
InputStreamReader
,a 可以工作的地方不能DataInputStream
工作?
我的猜测答案:如果速度真的很重要,并且您可以做到,那么将InputStream
's 字节数据直接转换为原始 viaDataInputStream
将是要走的路吗?这避免了Reader
必须将字节数据“转换”为int
第一个;并且它不依赖于提供字符集来解释返回的整数表示哪个字符。我想这就是人们所说的DataInputStream
允许机器独立读取基础数据的意思。
- 简化:
DataInputStream
可以将字节直接转换为原语。
激发整个事情的问题:我正在阅读以下教程代码:
FileInputStream fis = openFileInput("myFileText");
BufferedReader reader = new BufferedReader( new InputStreamReader( new DataInputStream(fis)));
EditText editText = (EditText)findViewById(R.id.edit_text);
String line;
while( (line = reader.readline()) != null){
editText.append(line);
editText.append("\n");
}
...我不明白为什么讲师选择使用new DataInputStream(fis)
它,因为它看起来没有任何直接从字节转换为原语的能力被利用?
- 我错过了什么吗?
感谢您的见解。