求 inputstream 的内容读到 byte数组中的代码 求 inputstream 的内容读到 byte数组中的代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FileInputStream fisfis.read(...)看下api,里面放个byte的数组接受保存数据 is.read(...) //我也知道用read可以实现问题是要知道大小,要预先定义byte数组的大小才行,好象inputsteam没有方法取大小的, 我就烦这个! to believefym据我所知,直接放一个byte数组是不行的,要知道大小才行. 请给一下完整的代码行吗? 不管用什么,总之输入一个inputstream 对象,返回一个byte数组即可! java不能定义动态数组,这有点不方便. 我从其它语言转过来 ... FileInputStream fis = new FileInputStream("H:\\我.txt"); byte c[] = new byte[10]; while(fis.read(c)!=-1){ System.out.println(new String(c)); }这里的byte数组有缓冲的作用 我是要这样的功能: 中间的代码谁会写呀??public static byte[] getBytesFromIS(InputStream is){ ... //谁帮忙写一下这里的代码?} 原来要读到一个数组里用楼上的定义byte数组的大小,然后read进去 用LIST一个个的add,再转成数组 原来要读到一个数组里用楼上的定义byte数组的大小,然后read进去================好象还没明白我想要什么, 你给的代码一次只能10个,我要的是返回全部! 用LIST一个个的add,再转成数组==========================我也是这样想的,好象很麻烦! 奇怪了,这么简单的功能居然没人来回答,CSDN的高手去哪了?!自己贴出答案: public static byte[] readBytesFromIS(InputStream is) throws IOException{ int total = is.available(); byte[] bs = new byte[total]; is.read(bs); return bs; } 关键是available() 可以取得InputStream 的大小,大家都只会说read() 如果InputStream里面的数据比较少,这样做简单明了,当然很好。但是,如果InputStream里的数据很多,几百M,甚至上G,用楼主的办法的处理的话,恐怕,就会出现OutOfMemory错误(不信可以试试)。另外,如果你操作的InputStream是Socket的InputStream,available()方法返回仅仅是当前Socket缓冲区中的字节数,不一定就是Socke对端发送给你的全部数据,等你read后,InputStream还会有别的数据,那么你还需要read一次,直到available()返回0或者-1,这其实还是一个循环。流的设计思想是处理动态的,数据个数不可预知的数据,它就像一个管道,你永远都无法知道这个管道会传来多少数据(FileInputStream是一个特例),因此,一般情况下,都是边read,边处理。 谢谢muymuy(muy)CSDN 的java版 就是太少 muymuy(muy) 这样的人呀,问了很多问题,很少人能给好的答案.但对于一般的情况,我只需要判断一下available() 有大小,如果不超过一定的长度我就用以上代码一次性读取了. 所以以上代码在很多情况下也是很有用的. 太大的时候分批读取就行了. try { inputtextfile=new FileInputStream(path); length = inputtextfile.available(); System.out.println("Length :" + length+"KB"); readHZK(); } catch(IOException e) { System.out.println(e); } byte [] b=byte[1024];FileInputStream fis=new FileInputStream("file.txt");int i=fis.read(b);System.out.println(new String(b,0,i)); 用ByteArrayOutputStream 里面有个toByteArray相关查API 完整的如下import java.io.*;public class pageBean { public static void main(String[] args) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream("c:\\test.xml"); int b = 0; while ((b = fis.read()) != -1) { bos.write(b); } fis.close(); byte[] t = bos.toByteArray(); System.out.println(new String(t, "UTF8")); } catch (Exception e) { e.printStackTrace(); } }} 用ByteArrayOutputStream 里面有个toByteArray=================================这个我知道! 但我要求的是inputstream, ByteArrayOutputStream 可以直接转换成inputstream, 但inputstream不可以直接转换成 ByteArrayOutputStream ! 不好意思了eugenedj(今是昨非) 的回复早就提示到重心了,我没有注意,在这里要谢谢eugenedj了! insiku 你给老子s h u t u p中国净什么那种人了不愿在中国待着 滚 public static byte[] read(String filename) throws IOException{ File file=new File(filename); RandomAccessFile raf=new RandomAccessFile(file, "r"); byte[] buf=new byte[(int) raf.length()]; raf.read(buf); raf.close(); return buf; } 关于String类intern方法的疑惑 任务管理器被JAVA代码禁用 浮点数为什么要用移码,而不用补码呢? 多线程+批处理的问题 [求教]如何使用jdk自动生成一个字符串 奇怪的static inner class源码? JTable显示区域之自动定位 问题:关于插入一条记录 在线等待 请问applet的问题 我刚装上jdk1_2_1-win,但有问题啊!!急!! JAVA编程:打印昨天的当前时刻 jni 异常:Exception in thread "main" java.lang.UnsatisfiedLinkError: hello
fis.read(...)
看下api,里面放个byte的数组接受保存数据
问题是要知道大小,要预先定义byte数组的大小才行,好象inputsteam没有方法取大小的, 我就烦这个!
据我所知,直接放一个byte数组是不行的,要知道大小才行. 请给一下完整的代码行吗?
java不能定义动态数组,这有点不方便. 我从其它语言转过来 ...
byte c[] = new byte[10];
while(fis.read(c)!=-1){
System.out.println(new String(c));
}这里的byte数组有缓冲的作用
中间的代码谁会写呀??
public static byte[] getBytesFromIS(InputStream is){
... //谁帮忙写一下这里的代码?
}
用楼上的定义byte数组的大小,然后read进去
用楼上的定义byte数组的大小,然后read进去
================
好象还没明白我想要什么, 你给的代码一次只能10个,我要的是返回全部! 用LIST一个个的add,再转成数组
==========================
我也是这样想的,好象很麻烦!
public static byte[] readBytesFromIS(InputStream is) throws IOException{
int total = is.available();
byte[] bs = new byte[total];
is.read(bs);
return bs;
}
CSDN 的java版 就是太少 muymuy(muy) 这样的人呀,问了很多问题,很少人能给好的答案.但对于一般的情况,我只需要判断一下available() 有大小,如果不超过一定的长度我就用以上代码一次性读取了.
所以以上代码在很多情况下也是很有用的. 太大的时候分批读取就行了.
{
inputtextfile=new FileInputStream(path);
length = inputtextfile.available();
System.out.println("Length :" + length+"KB");
readHZK();
}
catch(IOException e)
{
System.out.println(e);
}
FileInputStream fis=new FileInputStream("file.txt");
int i=fis.read(b);
System.out.println(new String(b,0,i));
相关查API
import java.io.*;public class pageBean { public static void main(String[] args) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream("c:\\test.xml");
int b = 0;
while ((b = fis.read()) != -1) {
bos.write(b);
}
fis.close();
byte[] t = bos.toByteArray();
System.out.println(new String(t, "UTF8")); } catch (Exception e) {
e.printStackTrace();
} }
}
=================================
这个我知道! 但我要求的是inputstream, ByteArrayOutputStream 可以直接转换成inputstream, 但inputstream不可以直接转换成 ByteArrayOutputStream !
eugenedj(今是昨非)
的回复早就提示到重心了,我没有注意,在这里要谢谢eugenedj了!
insiku 你给老子s h u t u p
中国净什么那种人了
不愿在中国待着 滚
File file=new File(filename);
RandomAccessFile raf=new RandomAccessFile(file, "r");
byte[] buf=new byte[(int) raf.length()];
raf.read(buf);
raf.close();
return buf;
}