String與InputStream互轉(zhuǎn)的幾種方法

 /**
     * 利用BufferedReader實現(xiàn)Inputstream轉(zhuǎn)換成String <功能詳細描述>
     * 
     * @param in
     * @return String
     */
    
    public static String Inputstr2Str_Reader(InputStream in, String encode)
    {
        
        String str = "";
        try
        {
            if (encode == null || encode.equals(""))
            {
                // 默認以utf-8形式
                encode = "utf-8";
            }
            BufferedReader reader = new BufferedReader(new InputStreamReader(in, encode));
            StringBuffer sb = new StringBuffer();
            
            while ((str = reader.readLine()) != null)
            {
                sb.append(str).append("\n");
            }
            return sb.toString();
        }
        catch (UnsupportedEncodingException e1)
        {
            e1.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        
        return str;
    }
    /**
     * 利用byte數(shù)組轉(zhuǎn)換InputStream------->String <功能詳細描述>
     * 
     * @param in
     * @return
     * @see [類驶悟、類#方法、類#成員]
     */
    
    public static String Inputstr2Str_byteArr(InputStream in, String encode)
    {
        StringBuffer sb = new StringBuffer();
        byte[] b = new byte[1024];
        int len = 0;
        try
        {
            if (encode == null || encode.equals(""))
            {
                // 默認以utf-8形式
                encode = "utf-8";
            }
            while ((len = in.read(b)) != -1)
            {
                sb.append(new String(b, 0, len, encode));
            }
            return sb.toString();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return "";
        
    }
    /**
     * 利用ByteArrayOutputStream:Inputstream------------>String <功能詳細描述>
     * 
     * @param in
     * @return
     * @see [類、類#方法磅叛、類#成員]
     */
    public static String Inputstr2Str_ByteArrayOutputStream(InputStream in,String encode)
    {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] b = new byte[1024];
        int len = 0;
        try
        {
            if (encode == null || encode.equals(""))
            {
                // 默認以utf-8形式
                encode = "utf-8";
            }
            while ((len = in.read(b)) > 0)
            {
                out.write(b, 0, len);
            }
            return out.toString(encode);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 利用ByteArrayInputStream:String------------------>InputStream <功能詳細描述>
     * 
     * @param inStr
     * @return
     * @see [類睦疫、類#方法道盏、類#成員]
     */
    public static InputStream Str2Inputstr(String inStr)
    {
        try
        {
            // return new ByteArrayInputStream(inStr.getBytes());
            // return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
            return new StringBufferInputStream(inStr);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

===============================

Android讀取txt文件亂碼解決方案:
讀取inputsteam的時候以“GB2312”方式讀取莹菱,注意單純的利用retStr =EncodingUtils.getString(retStr.getBytes(), "GB2312");是不行的移国,實例化retStr的時候就應(yīng)該以“GB2312”方式。

以下是轉(zhuǎn)載的內(nèi)容:

從SDCard保存的txt文件讀取中文到android系統(tǒng)中會出現(xiàn)亂碼問題芒珠,如何解決這個亂碼問題桥狡,網(wǎng)上有不少解答方法搅裙,譬如說利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但并非對所有的情況都適用皱卓,解決亂碼問題首先要明白為什么會亂碼。究其原因部逮,是因為txt文件在win系統(tǒng)上保存時默認為ANSI格式娜汁,而android目前只支持UTF-8編碼,因此將txt文件的中文讀入android系統(tǒng)中會產(chǎn)生亂碼兄朋。也有人說直接將txt另存為UTF-8編碼格式來解決亂碼問題掐禁,但這種方法指標不治本,不能要求用戶手動去更改格式,客戶第一嘛傅事。因此還是需要想辦法在程序中進行處理缕允。

以下做了一些編碼格式的測試:
測試文本: 122.11196,29.90573,北侖固廢廠 測試代碼段:

reader=new BufferedReader(new FileReader(filename));

strLine=reader.readLine() ;

String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");

String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");

String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");

將文件存成 Unicode 格式

圖片.png

將文件存成utf-8 格式


圖片.png

這種方式能得到非亂碼的中文顯示,但對于 utf-8 格式下取得的經(jīng)緯度數(shù)字利用double lon = Double.parseDouble(lat); 報錯 NumberFormatException蹭越,原因可能是 parseDouble(lat)方法不能處理存成utf-8格式的帶標點小數(shù)障本。 將文件 存成 ANSI 格式


圖片.png
將代碼改為:

reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename),"GB2312")); 
strLine=reader.readLine() ;

String temp1 = EncodingUtils.getString(strLine.getBytes(),"GB2312");

String temp2 = EncodingUtils.getString(strLine.getBytes("utf-8"),"utf-8");

String temp3 = EncodingUtils.getString(strLine.getBytes(),"utf-8");
圖片.png

即解決了中文亂碼問題,又解決了Double.parseDouble(lat)報錯問題响鹃。
轉(zhuǎn)載

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驾霜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子买置,更是在濱河造成了極大的恐慌粪糙,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿项,死亡現(xiàn)場離奇詭異蓉冈,居然都是意外死亡,警方通過查閱死者的電腦和手機轩触,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門洒擦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怕膛,你說我怎么就攤上這事熟嫩。” “怎么了褐捻?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵掸茅,是天一觀的道長。 經(jīng)常有香客問我柠逞,道長昧狮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任板壮,我火速辦了婚禮逗鸣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撒璧。我一直安慰自己笨使,他們只是感情好硫椰,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岳遥,像睡著了一般裕寨。 火紅的嫁衣襯著肌膚如雪帮坚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天讯泣,我揣著相機與錄音好渠,去河邊找鬼节视。 笑死,一個胖子當著我的面吹牛霍掺,可吹牛的內(nèi)容都是我干的拌蜘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼兔魂,長吁一口氣:“原來是場噩夢啊……” “哼举娩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铜涉,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骄噪,失蹤者是張志新(化名)和其女友劉穎链蕊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逻谦,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡邦马,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了随闽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝谭。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡攘烛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟漱,到底是詐尸還是另有隱情鼠次,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布须眷,位于F島的核電站,受9級特大地震影響花颗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惠拭,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望职辅。 院中可真熱鬧棒呛,春花似錦、人聲如沸域携。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扛禽。三九已至皱坛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背熊户。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嚷堡,地道東北人麦到。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像欠肾,于是被迫代替她去往敵國和親瓶颠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容