可能重复:
Why Java OutputStream.write() Takes Integer but Writes Bytes
为什么write()
类的OutputStream
方法在实际逐字节写入数据时采用整数而不是字节?
答案 0 :(得分:3)
它与w IntputStream.read()
一致,并且由于大多数操作(sum,mul,div等)都被提升为int,因此无需经常转换为byte
。
我认为没关系。
答案 1 :(得分:1)
它实际上从该int写入一个字节(8个低位)。请参阅文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html#write%28int%29
修改:我做了一些挖掘并找到了这个:Why Java OutputStream.write() Takes Integer but Writes Bytes
答案 2 :(得分:0)
您可以使用它来写入有符号或无符号字节。大多数字节流都采用无符号字节,匹配的InputStream.read()读取非负int
,您可以将其转换为(byte)
以使其签名。
如果您创建了一个readObject和writeObject,您将获得一个ObjectInputStream和ObjectOutptuStream来读/写您对象的自定义序列化格式。
http://java.sun.com/developer/technicalArticles/ALT/serialization/
private void writeObject(ObjectOutputStream oos)
throws IOException {
oos.defaultWriteObject();
// Write/save additional fields
oos.write(byteField);
oos.writeObject(new java.util.Date());
}
// assumes "static java.util.Date aDate;" declared
private void readObject(ObjectInputStream ois)
throws ClassNotFoundException, IOException {
ois.defaultReadObject();
// Read/initialize additional fields
byteField = oos.read();
aDate = (java.util.Date)ois.readObject();
}