Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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中使用OutputStream的说明?_Java_Io_Outputstream_Fileoutputstream - Fatal编程技术网

关于在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垃圾的验证站点。不要对非代码的文本使用代码格式,对引用的文本使用引号格式。