关于在Java中使用OutputStream的说明?
我读了一遍。它有以下代码段关于在Java中使用OutputStream的说明?,java,io,outputstream,fileoutputstream,Java,Io,Outputstream,Fileoutputstream,我读了一遍。它有以下代码段 OutputStream output = new FileOutputStream("c:\\data\\output-text.txt"); while(moreData) { int data = getMoreData(); output.write(data); } output.close(); 提到: 输出流用于写入基于字节的数据,每次写入一个字节。OutputStream的write()方法采用一个int,其中包含要写入的字节的字节值 假设
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
while(moreData) {
int data = getMoreData();
output.write(data);
}
output.close();
提到:
输出流
用于写入基于字节的数据,每次写入一个字节。OutputStream
的write()
方法采用一个int
,其中包含要写入的字节的字节值
假设我正在将字符串Hello World
写入文件,因此字符串中的每个字符都将使用getMoreData()
方法转换为int
。它是怎么写的?作为输出文本.txt中的字符或字节?如果以字节写入,如果必须“重新转换”字节到字符,以字节写入有什么好处?每个字符(以及几乎存储在文件中的任何内容)都是一个字节。例如:
- 小写字母“a”写为一个字节,十进制值为97
- 数字“1”写为一个字节,十进制值为49
不再有数据类型的概念,一旦信息写入文件,一切都只是一个字节流。重要的是用于将信息存储到文件中的编码
看一看,这对初学者学习信息编码非常有用
为了说明这一点,创建一个包含文本“hello world”的文件
$ echo 'hello world' > hello.txt
然后使用od
命令输出写入文件的字节:
$ od -td1 hello.txt
0000000 104 101 108 108 111 32 119 111 114 108 100 10
0000014
上面的意思是,在文件开头的地址0000000处,我看到一个字节具有十进制值104(即字符“h”),然后是一个字节具有十进制值101(即字符“e”),依此类推。流对字节进行操作,并简单地读/写原始数据
读卡器和写卡器使用UTF-8或US-ASCII等字符集将底层数据解释为字符串。这意味着他们可以使用8位字符(ASCII)并将数据转换为UTF-16字符串
流使用字节,读写器使用字符串(或其他复杂类型)。这篇文章不完整,因为OutputStream
具有重载写入方法,这些方法使用字节[]
、字节[]
以及偏移量和长度
参数,或者单个int
在将字符串
写入流的情况下,当您仅有的接口是OutputStream
(假设您不知道底层实现是什么),最好使用output.write(String.getBytes())
。一次迭代剥离一个int
并将其写入文件,与传递一个字节数组的单个写入调用相比,执行起来会非常糟糕。Java.io.OutputStream类是表示字节输出流的所有类的超类。当字节写入OutputStream时,它会可能不会立即写入字节,而write方法可能会将字节放入缓冲区
有如下所述的编写方法:
无效写入(字节[]b)
此方法将指定字节数组中的b.length字节写入此输出流
无效写入(字节[]b,整数位置,整数长度)
此方法将从偏移位置开始的指定字节数组中的长度字节写入此输出流
无效写入(int b)
此方法将指定的字节写入此输出流。我不明白为什么StackOverflow必须成为每个任意Internet垃圾的验证站点。不要对非代码的文本使用代码格式,对引用的文本使用引号格式。