JAVA中OUTPUTSTREAM中方法WRITE用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中OUTPUTSTREAM中方法WRITE用法相关的知识,希望对你有一定的参考价值。

我在代码中有时看到OUTPUTSTREAM用WRITE方法的时候,把STRING转换成BYTE写出.我原本以为WRITE里面只能放BYTE用来写出.但后来看到有中文子的 他也直接用STRING而没有转换成BYTE,这是为什么呢?

write(byte[]b)方法:将b.length个字节从指定字节数组写入此文件输出流中。

write(byte[]b,intoff,intlen)方法:将指定字节数组中从偏移量off开始的len个字节写入此文件输出流。使用方法write(byte[]b),即向文件写入一个byte数组的内容;

创建一个字符串对象,并调用方法getBytes(),将其转换成一个字符数组作为write(byte[]b)的形参;当文件MyFile1.txt不存在时,该方法会自动创建一个这个文件;当文件已经存在时,该方法会创建一个新的同名文件进行覆盖并写入数组内容。

扩展资料

WRITE使用示例

fis=newFileInputStream(fileIN);//输入流连接到输入文件

fos=newFileOutputStream(fileOUT);//输出流连接到输出文件

byte[]arr=newbyte[10];//该数组用来存入从输入文件中读取到的数据

intlen;//变量len用来存储每次读取数据后的返回值

while((len=fis.read(arr))!=-1)

fos.write(arr,0,len);

//while循环:每次从输入文件读取数据后,都写入到输出文件中

catch(IOExceptione)

e.printStackTrace();

参考技术A 看帮助文档

void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void write(int b)
将指定的字节写入此输出流。

没有write(String s)这个方法啊.本回答被提问者和网友采纳
参考技术B OUTPUTSTREAM 的 api 里定义的很清楚啊

Java FileInput/OutputStream 和 ByteBuffer

【中文标题】Java FileInput/OutputStream 和 ByteBuffer【英文标题】:Java FileInput/OutputStream and ByteBuffer 【发布时间】:2015-12-13 20:29:03 【问题描述】:

如何使用 ByteBuffer 将整数 1432 写入 FileOutputStream 写入的文件中。由于 1432 占用超过一个字节,我们不能使用 write() 方法。 再者,后面使用 FileInputStream read() 方法时如何取回整数呢?

我尝试使用:

int i = 1432;
byte[] bytesi = ByteBuffer.allocate(4).putInt(i).array();
fileOS.write(bytesi);

但是当读取文件时:

int e = fileIS.read();
System.out.println(e);
int e1 = fileIS.read();
System.out.println(e1);
int e2 = fileIS.read();
System.out.println(e2);
int e3 = fileIS.read();
System.out.println(e3);

我得到如下输出:

255
132
201
255

【问题讨论】:

@jonasnas 那么将存储多少字节?如果我使用 fileOS.write(i) 好的,明白你的意思。你的意思是你不能直接使用它 【参考方案1】:

由于您使用 ByteBuffer 从整数生成字节,因此您也可以使用它进行逆变换

byte[] bytes = new byte[4];
fis.read(bytes);
int x = ByteBuffer.wrap(bytes).getInt();

【讨论】:

【参考方案2】:

XY 问题。您不需要 ByteBuffer, 您需要将 int 写入二进制文件。 DataOutputStream 拥有您需要的所有方法,并且已经可以与 FileOutputStream. 一起使用,同样DataInputStream 已经可以与 FileInputStream. 一起使用

【讨论】:

【参考方案3】:

您可以将 FileInputStreamFileOutputStream 包装到 DataInputStream / DataOutputStream 中,以获得各种数据类型的辅助方法,例如 readInt / writeInt

http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html

使用示例:http://www.tutorialspoint.com/java/io/dataoutputstream_writeint.htm

【讨论】:

【参考方案4】:

与上面相同的基本答案,使用 ByteBuffer 函数,但不要乱用你自己的 byte[]。

ByteBuffer bytesIn = ByteBuffer.allocate(4);
fileIS.read(bytesIn.array());
int e = bytesIn.getInt();

您也可以/应该这样做以写入字节,例如

int i = 1432;
ByteBuffer bytesOut = ByteBuffer.allocate(4).putInt(test);
outFile.write(bytesOut.array());

【讨论】:

以上是关于JAVA中OUTPUTSTREAM中方法WRITE用法的主要内容,如果未能解决你的问题,请参考以下文章

Java FileInput/OutputStream 和 ByteBuffer

InputStream && OutputStream

java me:如何清除文件

java回顾之IO流字节流

InputStream和outputStream

00089_字节输出流OutputStream