java OutputStream使用方法

OutputStream的write方法中写出去的是字节是吗?out.write(list.get(j).getBytes("GB2312"));我遍历了一个字符串集合,... OutputStream的write方法中写出去的是字节是吗?out.write(list.get(j).getBytes("GB2312"));我遍历了一个字符串集合,把每一个字符串这样发出去,只使用OutputStream,在服务端我只用InputStream来循环的听,得到了很多的字节,我要怎么把字节重新拼装成一串串的字符串?
.getBytes("GB2312")的作用是什么,既然是字节那么按照编码格式发送是什么意思?

在服务端的InputStream.read方法来读取的话,我怎么能读取到固定长度的字节,然后用这些字节拼装成一个字?
展开
 我来答
小T爱旅行
推荐于2019-09-27 · 旅游业余爱好者,希望带大家云旅游。
小T爱旅行
采纳数:301 获赞数:193924

向TA提问 私信TA
展开全部

outputStream是流的形式,具体可以表现为FileOutputStream的形式进行整行的写入。 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。(OutputSteam的子类)

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例: 

OutputStreamWriter pw = null;//定义一个流 。

pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例 。

pw.write("是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write pw.close();//关闭流 。

备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

扩展资料:

创建对象成功后,可以参照以下方法,对流进行写操作或者其他操作。

1.public final void write(byte[] w, int off, int len)throws IOException.

将指定字节数组中从偏移量 off 开始的 len 个字节写入此字节数组输出流。   

2.Public final int write(byte [] b)throws IOException.

将指定的字节写入此字节数组输出流。    

3.这些方法将指定的基本数据类型以字节的方式写入到输出流。 

public final void writeBooolean()throws IOException.

public final void writeByte()throws IOException.

public final void writeShort()throws IOException.

public final void writeInt()throws IOException.

4.Public void flush()throws IOException.

刷新此输出流并强制写出所有缓冲的输出字节。    

5.public final void writeBytes(String s) throws IOException.

将字符串以字节序列写入到底层的输出流,字符串中每个字符都按顺序写入,并丢弃其高八位。    

参考资料来源:百度百科—OutputStream

呼哈嘿吼呵Cf
推荐于2017-09-25 · TA获得超过210个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:206万
展开全部
1 字节转为字符,String有个构造函数,参数是字节数组,用这个就行了。
2 getBytes是string的方法,加了这个应该是为了统一,如果你读的是GBK的,写的是UTF8的,可能会有乱码
更多追问追答
追问
如果在我服务端需要转化为字符串,我就要事先知道发送的字符串的字符长度吗?在服务端我就按照这个长度来读,然后new String(byte[])来转换一个个字符再进行拼接?
追答
不需要知道长度,都是用一个while循环,你可以new一个byte的数组,定义一个大小,一直读到流里没有数据、
byte [] buf = new byte[1024];//一次读1024个byte
int length;//每次读取的长度
StringBuffer sb = new StringBuffer();

while((length = outputstream.read(buf)) > 0){
sb.append(new String(byte,0,length));//应该是这么写的,你试试看

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skyAnizephyr
2014-10-30 · 超过10用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:19万
展开全部
你怎么拆的就怎么拼装回去呗new String(getyourstr.getBytes("GB2312"))
getByte("GB2312")是把你的字符串按GB2312格式编码后转换成字节数组
可是一般是这么用的new String(getyourstr.getBytes("iso-8859-1"),"GB2312"),可以避免乱码
你这么写法不知道是要干什么
更多追问追答
追问
谢谢,我想知道我这么写出去后在另一边InputStream的read方法来读,比如我写了8个字符的一个字符串,我怎么重新拼回来?
read()方法可以传入一个byte[]数组,固定读这么长,但是这个方法返回给我一个实际读取长度.....这个没用啊.
追答
OutputStream和InputStream都是在服务端,我不明白这么转一下是要做什么?方不方便上点代码?你的意思是不是out.write()到前端后再从前端读取响应的参数之类的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2017-10-13 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1728万
展开全部
OutputStream是流的形式,具体可以表现为FileOutputStream的形式进行整行的写入。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式