关于inputstream的问题来者有分!!

gdsean 2001-09-12 10:47:47
1,如何读取inputstream的内容?
2,读取到的东西不能有乱码
int read(byte[] b) 方法可能中断分开中文字符
3,byte b = new byte[streamlength];
inputs.read(b);
temp=new String(b);
System.out.print(temp);
按长度读取出现一大串不可见字符,整个inputstream不完整

...全文
156 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
虎叔 2001-09-13
  • 打赏
  • 举报
回复
对于流,如果使用byte的方式读取,那无论什么样的文件都可以正确读出。包括二进制的图片文件。
gdsean 2001-09-12
  • 打赏
  • 举报
回复
to clane:用过了,使用readLine没有问题
但是inputstream可能是文件流
clane 2001-09-12
  • 打赏
  • 举报
回复
你用一个filter吧。例如bufferedreader
gdsean 2001-09-12
  • 打赏
  • 举报
回复
这也行?!给点建议吧!!
Jneu 2001-09-12
  • 打赏
  • 举报
回复
2
hexiaofeng 2001-09-12
  • 打赏
  • 举报
回复
BufferedInputStream(InputStream in)
Jneu 2001-09-12
  • 打赏
  • 举报
回复
1
RedGuest 2001-09-12
  • 打赏
  • 举报
回复
java里char是16位,当然就有问题了。
直接用write(byte[])不就行了吗?:)
java里stream的操作那么多,多看api就明白了(尽管我现在还是不明白:)
coaa 2001-09-12
  • 打赏
  • 举报
回复
robber is right!
Fallingstar 2001-09-12
  • 打赏
  • 举报
回复
关注
javastone 2001-09-12
  • 打赏
  • 举报
回复
换另一种方法试一试,采用java.net包里的Objectinputstream试试
他是把对象放在输入流里,
在另一端,用对象把他解开即可.
hexiaofeng 2001-09-12
  • 打赏
  • 举报
回复
InputStream is = sock.getInputStream();

DataInputStream dis = new DataInputStream(is);

gdsean 2001-09-12
  • 打赏
  • 举报
回复
怎么没有人想要分呢;(
gdsean 2001-09-12
  • 打赏
  • 举报
回复
2 robber:
1,我需要的是文件流原样
2,streamlength的问题:
该流是从网络获得,从http类的getcontenttype得到
int i = 0;
while ((i = inputs.read()) != -1)
{
System.out.write(i);//这里没有问题
为什么(char)i以后中文有乱码?
流如果是图片那么(char)i产生的结果该图片不能显示。
}
虎叔 2001-09-12
  • 打赏
  • 举报
回复
1、解决你乱码的问题
首先你必须知道你读的文件是什么字符集的文件
然后可以:temp = new String(b,"你文件的字符集,如:GB2312")
2、解决没有读全的问题
在你的代码byte b = new byte[streamlength];中,你怎么知道streamlength的?
下面是JDK1.3.1对于inputstream返回值的说明:
Returns:
the total number of bytes read into the buffer, or -1 is there is no more data because the end of the stream has been reached.
很显然,你要监测read(byte[] b) 函数的返回值,只有返回-1才表示已经读完了。

====看了还有很多人对流的概念不了解====

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧