java中字符流和字节流的转换
ringa_lee
ringa_lee 2017-04-17 17:37:42
0
3
971

看到InputStreamReader和OutputStreamWriter的一些说法,
说InputStreamReader是将字节流转换成字符流,而OutputStreamWriter则相反,是将字符流转换成字节流;
但是
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("xxxx")));
这句代码中,明显OutputStreamWriter接收的是一个字节流,而返回的则是个字符流,
所以上面的说法应该是错误的吧?

ringa_lee
ringa_lee

ringa_lee

membalas semua(3)
刘奇

Um...ini...
Parameter input kaedah pembina OutputStreamWriter ialah strim bait OutputStream, yang bermaksud menukar OutputStream kepada OutputStreamWriter Dari perspektif ini, ia adalah "menukar strim bait ke aliran watak" .
Apabila OutputStreamWriter menulis, anda menghantar aksara, tetapi pada akhirnya IO menulis strim bait Dari perspektif ini, ia "menukar strim aksara kepada strim bait".
Jadi kedua-dua pernyataan adalah betul.

"Tukar strim bait kepada strim aksara" merujuk kepada penukaran API, "Tukar strim aksara kepada strim bait" merujuk kepada penukaran data semasa penulisan.

Malah, anda hanya perlu tahu bahawa komputer itu sendiri hanya menyokong bait binari seperti 01010101, dan aksara atau rentetan diperoleh melalui pengekodan bait OutputStreamWriter hanyalah satu lagi operasi pengekodan.

巴扎黑

Membina OutputStreamWriter adalah FileOutputStream. Walau bagaimanapun, apabila menulis operasi kepada penulis, rentetan itu ditulis, dan penulis akan menukar rentetan lulus ke aliran karakter ke dalam aliran ... jadi ...

PHPzhong
    /**
     * String字符串转换成InputStream流
     * @param str String字符串
     * @param encoding 编码格式
     * @return InputStream流
     */
    public static InputStream string2InputStream(String str, String encoding) {
        ByteArrayInputStream result = null;
        try {
            if(str != null){
                result = new ByteArrayInputStream(str.getBytes(encoding));
            }
        } catch (Exception e) {
            result = null;
        }
        return result;
    }
    /**
     * InputStream流转换成String字符串
     * @param inStream InputStream流
     * @param encoding 编码格式
     * @return String字符串
     */
    public static String inputStream2String(InputStream inStream, String encoding){
        String result = null;
        try {
            if(inStream != null){
                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                byte[] tempBytes = new byte[_buffer_size];
                int count = -1;
                while((count = inStream.read(tempBytes, 0, _buffer_size)) != -1){
                    outStream.write(tempBytes, 0, count);
                }
                tempBytes = null;
                outStream.flush();
                result = new String(outStream.toByteArray(), encoding);
            }
        } catch (Exception e) {
            result = null;
        }
        return result;
    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan