InputStream方法提供了read(byte[] b)方法将其内容写入一个byte数组,但是我事先不能知道这个数组的长度,我应该如何将InputStream里面的内容完全写入一个数组中呢?
解决方案 »
- 怎么用jsoup将网页中的正文提取成txt文本
- 我想写一个多界面的C/S架构的管理系统,那些面版都写到一个类里面吗?
- java程序报错使用的是java.util.Timer进行数据库之间数据转移用的
- java 打印的时候怎样设置页边距??????
- 奇怪的字符集问题
- 急救:如何在jpanel中画出一行字 如:“我爱你”但是"爱"字用红色显示
- 关于sdk1.4.2在XP下的安装问题
- java的运行
- 调查一下,现在有多少人用 Together ControlCenter ?
- 请问如何用jdk命令编译java源文件?高分求救
- 求助随机数如何控制重复的个数!
- 有关移动CMPP3.0开发短信平台,50分求解,在线等!
List byteList = new ArrayList();
int byteInt = 0;
while ((byteInt = inputStream.read()) != -1) {
byteList.add(new Byte((byte)byteInt));
}
byte[] bytes = new byte[byteList.size()];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = ((Byte)byteList.get(i)).byteValue();
}
可是这里面用到了List,是不是有点太重量极了……
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;public class FileByteUtil {
public static void main(String[] args) throws Exception {
File file=new File("f:/test.doc");
byte[] fileByte = file2byte(file);
byte2file(fileByte, "f:/test2.doc");
}
public static byte[] file2byte(File f) throws Exception {
return file2byte(f.getPath());
}
public static byte[] file2byte(String f) throws Exception {
try {
InputStream in = new FileInputStream(f);
byte[] tmp = new byte[512];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int bytesRead = in.read(tmp);
while (bytesRead != -1) {
out.write(tmp, 0, bytesRead);
bytesRead = in.read(tmp);
}
return out.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} // writes byte [] to a file
public static void byte2file(byte[] data, String fn) throws Exception {
try {
OutputStream out = new FileOutputStream(fn);
out.write(data);
out.flush();
} catch (FileNotFoundException e) {
throw e;
} catch (IOException e) {
throw e;
}
}}
byte b = new byte[len];
in.read(b);
ByteArrayOutputStream out = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, out);
byte[] bytes = out.toByteArray();