java OutputStream使用方法
.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
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));//应该是这么写的,你试试看
}
getByte("GB2312")是把你的字符串按GB2312格式编码后转换成字节数组
可是一般是这么用的new String(getyourstr.getBytes("iso-8859-1"),"GB2312"),可以避免乱码
你这么写法不知道是要干什么
谢谢,我想知道我这么写出去后在另一边InputStream的read方法来读,比如我写了8个字符的一个字符串,我怎么重新拼回来?
read()方法可以传入一个byte[]数组,固定读这么长,但是这个方法返回给我一个实际读取长度.....这个没用啊.
OutputStream和InputStream都是在服务端,我不明白这么转一下是要做什么?方不方便上点代码?你的意思是不是out.write()到前端后再从前端读取响应的参数之类的?
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。