1. 程式人生 > >StringUtils:將一個InputStream流轉換成字串

StringUtils:將一個InputStream流轉換成字串

背景知識

計算機的檔案常被分為文字檔案和二進位制檔案兩大類:

  • 所有能用記事本開啟並看到其中字串內容的檔案被稱為文字檔案
  • 反之則稱為二進位制檔案
    注:實質上,文字檔案只是二進位制檔案的一種特例,當二進位制檔案中的內容剛好能夠被正常解析為字元的時候,那麼該二進位制檔案也就變成了文字檔案。

流的分類

  1. 位元組流和字元流
    區別:位元組流和字元流操所做的資料單元不同,位元組流所操作的資料單元是8位的位元組,而字元流操作的資料單元是16位的字元。
    關於位元組流和字元流選擇的問題:通常有一個規則,如果進行輸入/輸出的內容是文字內容,則應該考慮使用字元流;如果進行輸入/輸出的內容是二進位制內容,則應該考慮使用位元組流。
    問:為什麼不使用位元組流處理文字檔案?
    答:如果使用位元組流來處理文字檔案,則需要使用合適的方式把這些位元組轉換為字元,這就增加了變成的複雜度。
  2. 節點流和處理流
    • 可以從/向一個特定的IO裝置(如磁碟、網路)讀/寫資料的流,稱為節點流,節點流也被稱為低階流。
    • 處理流則用於對一個已存在的流進行連線或封裝,通過封裝後的流實現資料讀/寫功能,處理流也被稱為高階流。
      處理流的功能主要體現在下面兩方面:
      • 效能的提升:主要以增加緩衝的方式來提供輸入/輸出的效率。
      • 處理流可能提供了一系列便捷的方法來一次輸入/輸出大批的內容。
    • 好處:通過使用處理流來包裝不同的節點流,既可以消除不同節點流的實現差異,也可以提供更加方便的方法來完成輸入/輸出功能。
  3. 輸入流和輸出流

將一個InputStream流轉換成字串

輸入/輸出流體系中提供了兩個轉換流,這兩個轉換流用於實現將位元組流轉換成字元流,其中InputStreamReader將位元組流入劉轉化成字元輸入流,OutputStreamWriter同理。

      /**
         * 將一個InputStream流轉換成字串
         * 
         * @param is
         * @return
         */
        public static String toConvertString(InputStream is) {
            StringBuffer res = new StringBuffer();
            // 把位元組流轉化為字元流
            InputStreamReader isr = new InputStreamReader(is);
            // 普通的Reader讀取輸入內容時依然不太方便,可以將普通的
// Reader再次包裝成BufferedReader,利用BufferReader的readLine() // 方法可以一次讀取一行內容 BufferedReader read = new BufferedReader(isr); try { String line; line = read.readLine(); while (line != null) { res.append(line + "<br>"); line = read.readLine(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != isr) { isr.close(); isr.close(); } if (null != read) { read.close(); read = null; } if (null != is) { is.close(); is = null; } } catch (IOException e) { } } return res.toString(); }

相關推薦

StringUtils:一個InputStream流轉字串

背景知識 計算機的檔案常被分為文字檔案和二進位制檔案兩大類: 所有能用記事本開啟並看到其中字串內容的檔案被稱為文字檔案 反之則稱為二進位制檔案 注:實質上,文字檔案只是二進位制檔案的一種特例,當二進位制檔案中的內容剛好能夠被正常解析為字元的時候,那麼

一個Stream 和一個二進位制流轉字串

1. 將一個流轉換成字串 public partial class WebForm2 : System.Web.UI.Page { protected void Pag

輸入流轉字串的工具類

package mobilesafe.itcast.com.demo002; import java.io.ByteArrayOutputStream; import java.io.InputStream; /** * 將流轉換成字串的工具類 */ public

用遞迴法一個整數n轉換字串。 例如,輸入483,應輸出字串“483”。n的位數不確定,可以是任意的整數。

/*3、用遞迴法將一個整數n轉換成字串。 例如,輸入483,應輸出字串“483”。n的位數不確定,可以是任意的整數。*/ #include <stdio.h> int main()

C語言 用遞迴法一個整數n轉換字串

#include<stdio.h> int main(void) { int n; int enter_n(); void print_n(int n); n=enter_n(); print_n(n); return 0; } int enter_n()

二進位制流轉圖片檔案(轉)

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import

JAVA--二進位制流轉圖片檔案

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io

轉換流:字節輸入流轉字符輸入流 InputStreamReader

指定 int n) 摘要 amr lose pub pan string /* * 將字節輸入流變成字符輸入流 類 InputStreamReader * 構造方法: * InputStreamReader(InputStream in)

怎樣藍底照片白底

ava 對象 end pro xxx get mage 面積 .com 方法:美圖秀秀 + java程序。 原來的照片是這樣的: 1. 先用美圖秀秀將面積較大的藍底以及邊緣比較光滑的部分先刷成白色,或者摳出來都行。 2. 用java程序將邊緣部分的藍色調替

譚浩強 c程序設計 8.17用遞歸法一個整數n轉換字符串。例如,輸入486,應輸出字符串"486"。n的位數不確定,可以是任意位數的整數。

tco xsl bof hcl mku owb kit gym code 8.17用遞歸法將一個整數n轉換成字符串。例如,輸入486,應輸出字符串"486"。n的位數不確定,可以是任意位數的整數。 #include <stdio.h>char str1[20]

java 一個ip地址分割一個數組

代碼 一個數 數組 java str 測試 服務器 都是 其他 這個問題以前真還沒註意,好像記得分割過規律的字符串,但是不是像IP這樣是以"."為分割規律字符,而是其他的。 今天又用到類似功能,代碼寫好了也沒測試,直接上傳服務器,但是就是會報錯,之後看了日誌是ip分割部分

C 一個單鏈表拆3個迴圈連結串列,其中一個是純數字,一個純字母,一個其他字元

前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字

【經驗分享】如何一個PDF檔案拆分多個檔案

從事於辦公的夥伴每天都需要處理到各式各樣的辦公檔案,PDF格式的檔案就是其中的一種,有時候遇到一份PDF檔案頁面比較多,處理起來很麻煩的話我們該用什麼樣的方法呢?在這裡可以將一個PDF檔案拆分成多個檔案,這樣子就方便了很多。下面就將這種方法分享給大家!以供大家參考。   &n

HREE.JS 根據起始幀一個AnimationClip物件分割多個AnimationClip

THREE.JS 根據起始幀將一個AnimationClip物件分割成多個AnimationClip 因為從3dsMax裡面匯出的模型只支援一個動畫,如果需要對多個動畫進行單獨控制的話就必須將其切割成多個AnimationClip物件,其實原理跟陣列擷取是一樣的。

java一個JFrame介面分割多部分,每部分新增獨立背景圖片

現在,我要完成的目標是:建立了一個JFrame介面,我要分成兩部分,操作時兩部分完全獨立,互不影響,已完成的效果如下: 可以看到,我做的左邊是操作介面,右邊是顯示介面,左邊的背景我沒加,方法和右邊的是一樣的。 具體方法是這樣的,首先我建造兩個容器JPanel物件, 然後呼叫分割

一個數組轉換字串

public static String toString(int[] arr) {         StringBuilder str = new StringBuilder();         str.append("[");         for (int i =

ubuntu軟體源清華源

sudo vi /etc/apt/sources.list 然後將檔案替換為下面 # 預設註釋了原始碼映象以提高 apt update 速度,如有需要可自行取消註釋 deb https://m

oracle一個欄位拆分多個值(regexp_substr函式)

例: select regexp_substr(p.attributename, '[^,]+',1,level) c1 from tablename p connect by level &l

一個正整數分解質因數之積

/** * 檔名:Prime.java * 描述:將一個正整數分解成質因數之積 * 來源:網路 * 時間:2019.01.02 * 備註:終稿 * */ import java.util.*; public class Prime { public static void m

如何一個Maven專案轉化一個Eclipse專案

有時候我們需要將一個Maven專案匯入到Eclipse中,直接作為一個普通的eclipse專案來匯入是不行的,我們可以通過一個命令來實現:mvn eclipse:eclipse 1、 進入該Maven專案的目錄,該目錄下必須要有pom.xml檔案,否則是無法執