java OutputStream使用方法

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

在服务端的InputStream.read方法来读取的话,我怎么能读取到固定长度的字节,然后用这些字节拼装成一个字?

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-25
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));//应该是这么写的,你试试看

}

追问

很感谢,给了我一个思路了,基础不扎实.....现在gb2312能获取了,具体几个字节取一次还不知道,取出来都是乱码,我再调下,争取能一个个的汉子取出来然后做拼接就成功了,谢谢了

追答

恩恩,加油

本回答被提问者采纳
第2个回答  2014-10-30
你怎么拆的就怎么拼装回去呗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()到前端后再从前端读取响应的参数之类的?

追问

哎..我也不想这么复杂,直接搞个字符流发送服务端按行读取就完事了.现在只能按编码格式发送字节,那边再一点点拼了.感谢你耐心回答.

第3个回答  推荐于2017-10-13
OutputStream是流的形式,具体可以表现为FileOutputStream的形式进行整行的写入。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
相似回答