开发者社区> 问答> 正文

关于java输出流ByteArrayOutputStream的toString()方法

public class ByteArrayOutputStreamtoString {
public static void main(String[] args){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try{
dos.writeBoolean(true);
dos.writeDouble(2.345456);
dos.writeFloat(1.234354f);
String s = baos.toString();
System.out.println(s);
}catch(IOException e){
e.printStackTrace();
}
}
}

他的输出为什么是“@�~oq��?��P”这样的乱码?,还有toString()这个方法的用法是什么?是用来干什么的呢?

展开
收起
蛮大人123 2016-06-06 14:23:43 5331 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    不是这样用的 , ByteArrayOutputStream 存的是字节数组, toString 只是简单的把里面的 byte数组转成了字符串。程序可不知道你要怎么解析 byte。
    出现乱码很正常。 下面给你正确的用法

    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    
    /**
     * Created by chenhong on 16/3/10.
     */
    public class Main {
    
        public static void main(String[] args){
    
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            try{
    
    
                dos.writeBoolean(true);  //boolean 1位
                dos.writeInt(2); // int 32位   4字节
                dos.writeFloat(1.234354f); // float 32位   32字节
    
                byte[] bArray = baos.toByteArray();
                System.out.println("共"+bArray.length+"字节");
                for (int i = 0; i < bArray.length; ++i){
                        System.out.println(bArray[i]+" ");
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    2019-07-17 19:28:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载