bytearrayoutputstream,怎么清空ByteArrayOutputStream里的数据呢?
bytearrayoutputstream,怎么清空ByteArrayOutputStream里的数据呢?详细介绍
本文目录一览: ByteArrayOutputStream是什么意思
ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。
你好,ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。
bytearrayoutputstream内存溢出
bytearrayoutputstream内存溢出明显是内存泄漏。内存8G的内存占了7G多,很明显是内存泄漏。后来发现对文件的操作的时候用到了ByteArrayInputStream。ByteArrayOutputStream是字节数组输出流。它继承于OutputStream。
bytearrayoutputstream乱码如何解决
IO中用ByteArrayOutputStream解决乱码问题 --另一种解决乱码的方法
IO中另外一种防止乱码的方法:使用ByteArrayOutputStream
在创建ByteArrayOutputStream时,会自动创建一个以自动增长的缓存区,当数据读取完后再一起统一写出来,就不会有乱码的问题了
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
public class ByteArrayInputStreamTest {
public static void main(String[] args) throws Exception {
ByteArrayOutputStream out = null;
InputStream ins = new FileInputStream("test.txt");
int len = -1;
out = new ByteArrayOutputStream();
// 下面的read方法每次读取一个字节,并返回这个字节的int类型
while ((len = ins.read()) != -1) {
// 每次写入一个字节,out对象会自动创建一个反冲区,并自动增加大小
out.write(len);
System.out.println(out.size());
}
out.close();
ins.close();
System.out.println(out.toString());
}
}
每次写入时打印out对象的长度,可以看到out对象的长度每次增加1,因为每次读取一个字节,这样把所有的数据读取完后再调用toString方法转换成字符就不会出现乱码的问题了
JAVA数据流
import java.io.*;
public class Example9_6{
public static void main(String args[]){
int n=-1;//定义了一个int行变量赋初值为-1
ByteArrayOutputStream out=new ByteArrayOutputStream();//创建了一个ByteArrayOutputStream字节流,写操作的字节流
for(int i=1;i<=127;i++){//循环写入127个整数到所创建的流中
out.write(i);
}
ByteArrayInputStream in=new ByteArrayInputStream(out.toByteArray());////创建了一个 ByteArrayInputStream流,以写入的byte[]数组为参数,out.toByteArray()获得的是一个byte[]数组
while((n=in.read())!=-1){//对这个存储在内存中的字节流读取,当n=-1时即读取到了流中的所有数据
if(n%2==0){//如果n能被2整除,则打印回车
System.out.printf("\n");
}
System.out.printf("\t字节%d,对应字符\'%c\'",n,(char)n);//获得读取的字节数并且打印对应的字符是什么,看好了n对应的是前面的%d,(char)n对应%c
}
}
}
Java:内存中已经有了一个对象,如何使用ByteArrayOutputStream将该对象写入文件呢
你先用inputStream得到那个对象然后再读出来 写到指定的文件
对象序列化使用ObjectOutputStream类
ObjectOutputStream
ByteArrayOutputStream是将内存中的byte数据作为输出目标,
写入到文件则需要打开文件流,
内存中的对象要持久化有两种方式,一种是直接使用对象的序列化接口,该对象必须实现Serializable接口;另外一种自己写对象序列化接口。
1、ByteArrayOutputStream要写到文件可以通过writeTo方法,但是这样显然太啰嗦了,需要控制flush时机。
2、如果是对象已经实现序列化接口直接使用如下方式
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("filename"));o.writeObject(obj);
android,JAVA中的ByteArrayOutputStream和Byte[]的区别是什么呢
ByteArrayOutputStream
是一个byte类型数组输出流,而byte[]是byte类型的数组
你可以这样理解,一个是管道
可以流水
一个是什么样的水
比如
红色的水,泥水等等
Java类库中,将信息写入内存的类是( )。
【答案】:B
B。【解析】在java.i0中,提供了ByteArrayInputStream、ByteArrayOutputStream和StringBuffednput Stream类可以直接访问内存,其中用ByteArrayOutputStream可以向字节数组(缓冲区)写入数据。
Java:需要使用ByteArrayOutputStream将数据写入文件,不知该如何写下去了,求解
String filePath = "D:test.txt";//创建文件File file = new File(filePath);PrintWriter pw = null;try{ if(!file.exists()){ file.createNewFile(); } pw = new PrintWriter(new FileWriter(file)); pw.write(sb.toString());}catch(Exception e){ System.out.println("新建文件出错"); //e.printStackTrace();}finally{ pw.close();}这个只适用于文本文档,不能写word,excel,pdf
首先将数据流化,然后调用io包的file创建文件或用已声明的文件,再写入文件转化过来嘛
package com.mkyong.core;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class Test { public static void main(String[] args) { User obj = new User(); obj.setName("Timml2"); FileOutputStream fos = null; try { fos = new FileOutputStream(new File("output")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Put data in your baos ObjectOutputStream objectOutputStream = new ObjectOutputStream(baos); objectOutputStream.writeObject(obj); objectOutputStream.flush(); objectOutputStream.close(); baos.writeTo(fos); baos.flush(); baos.close(); ObjectInputStream objectinputStream = new ObjectInputStream(new FileInputStream(new File("output"))); User user = (User)objectinputStream.readObject(); System.out.println(user); } catch (IOException ioe) { ioe.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } }}class User implements Serializable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } }
请问 java ByteArrayOutputStream不close会怎样?
ByteArrayOutputStream
是个字节数组输入流,是往内存当中的一块区域持续的输入数据,如果不关闭可能就会产生内存泄露,机器会越来越卡的
/** * Closing a ByteArrayOutputStream has no effect. The methods in * this class can be called after the stream has been closed without * generating an IOException. *
* */public void close() throws IOException {}复制了一段源码,可以看出来这里是个空实现的方法。所以字节数组其实是关不掉的,因为不会占用什么资源,JDK里有这个方法是为了一种好的编程习惯准备的。
怎么清空ByteArrayOutputStream里的数据呢?
write()把内容都写进去了,ttoByteArray()当然会增加长度了。
不管是ByteArrayOutputStream还是OutputStream都没有提供清除二进制流的方法。
如果想清除数据看看file操作api,或者找找其他流的方法看看