[java] view plain copy
  1. /**
  2. * 利用BufferedReader实现Inputstream转换成String <功能详细描述>
  3. *
  4. * @param in
  5. * @return String
  6. */
  7. public static String Inputstr2Str_Reader(InputStream in, String encode)
  8. {
  9. String str = "";
  10. try
  11. {
  12. if (encode == null || encode.equals(""))
  13. {
  14. // 默认以utf-8形式
  15. encode = "utf-8";
  16. }
  17. BufferedReader reader = new BufferedReader(new InputStreamReader(in, encode));
  18. StringBuffer sb = new StringBuffer();
  19. while ((str = reader.readLine()) != null)
  20. {
  21. sb.append(str).append("\n");
  22. }
  23. return sb.toString();
  24. }
  25. catch (UnsupportedEncodingException e1)
  26. {
  27. e1.printStackTrace();
  28. }
  29. catch (IOException e)
  30. {
  31. e.printStackTrace();
  32. }
  33. return str;
  34. }
  35. /**
  36. * 利用byte数组转换InputStream------->String <功能详细描述>
  37. *
  38. * @param in
  39. * @return
  40. * @see [类、类#方法、类#成员]
  41. */
  42. public static String Inputstr2Str_byteArr(InputStream in, String encode)
  43. {
  44. StringBuffer sb = new StringBuffer();
  45. byte[] b = new byte[1024];
  46. int len = 0;
  47. try
  48. {
  49. if (encode == null || encode.equals(""))
  50. {
  51. // 默认以utf-8形式
  52. encode = "utf-8";
  53. }
  54. while ((len = in.read(b)) != -1)
  55. {
  56. sb.append(new String(b, 0, len, encode));
  57. }
  58. return sb.toString();
  59. }
  60. catch (IOException e)
  61. {
  62. e.printStackTrace();
  63. }
  64. return "";
  65. }
  66. /**
  67. * 利用ByteArrayOutputStream:Inputstream------------>String <功能详细描述>
  68. *
  69. * @param in
  70. * @return
  71. * @see [类、类#方法、类#成员]
  72. */
  73. public static String Inputstr2Str_ByteArrayOutputStream(InputStream in,String encode)
  74. {
  75. ByteArrayOutputStream out = new ByteArrayOutputStream();
  76. byte[] b = new byte[1024];
  77. int len = 0;
  78. try
  79. {
  80. if (encode == null || encode.equals(""))
  81. {
  82. // 默认以utf-8形式
  83. encode = "utf-8";
  84. }
  85. while ((len = in.read(b)) > 0)
  86. {
  87. out.write(b, 0, len);
  88. }
  89. return out.toString(encode);
  90. }
  91. catch (IOException e)
  92. {
  93. e.printStackTrace();
  94. }
  95. return "";
  96. }
  97. /**
  98. * 利用ByteArrayInputStream:String------------------>InputStream <功能详细描述>
  99. *
  100. * @param inStr
  101. * @return
  102. * @see [类、类#方法、类#成员]
  103. */
  104. public static InputStream Str2Inputstr(String inStr)
  105. {
  106. try
  107. {
  108. // return new ByteArrayInputStream(inStr.getBytes());
  109. // return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
  110. return new StringBufferInputStream(inStr);
  111. }
  112. catch (Exception e)
  113. {
  114. e.printStackTrace();
  115. }
  116. return null;
  117. }

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

Android读取txt文件乱码解决方案:
读取inputsteam的时候以“GB2312”方式读取,注意单纯的利用retStr =EncodingUtils.getString(retStr.getBytes(), "GB2312");是不行的,实例化retStr的时候就应该以“GB2312”方式。
以下是转载的内容:
从SDCard保存的txt文件读取中文到android系统中会出现乱码问题,如何解决这个乱码问题,网上有不少解答方法,譬如说利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但并非对所有的情况都适用,解决乱码问题首先要明白为什么会乱码。究其原因,是因为txt文件在win系统上保存时默认为ANSI格式,而android目前只支持UTF-8编码,因此将txt文件的中文读入android系统中会产生乱码。也有人说直接将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 格式

    将文件存成utf-8 格式

    这种方式能得到非乱码的中文显示,但对于 utf-8 格式下取得的经纬度数字利用double lon = Double.parseDouble(lat); 报错 NumberFormatException,原因可能是 parseDouble(lat)方法不能处理存成utf-8格式的带标点小数。 将文件 存成 ANSI 格式

    将代码改为:

    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");

    即解决了中文乱码问题,又解决了Double.parseDouble(lat)报错问题

    转自:

    http://blog.csdn.net/iplayvs2008/article/details/11484627

String与InputStream互转的几种方法的更多相关文章

  1. String 和 InputStream 互转方式

    /** * 利用BufferedReader实现Inputstream转换成String <功能详细描述> * * @param in * @return String */ public ...

  2. String和inputstream互转【转文】

    URLConnection urlConn = url.openConnection(); // 打开网站链接s BufferedReader reader = new BufferedReader( ...

  3. JavaScript中unicode编码与String互转(三种方法)

    1.引言 JS本身就支持unicode转string功能,一共有三种方式和String单个字符转unicode编码. 2.方法 //unicode转String 1. eval("'&quo ...

  4. 在 Linux 下将 PNG 和 JPG 批量互转的四种方法

    计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务[1]的方法.这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .J ...

  5. java实现map和object互转的三种方法

    /**  * 使用org.apache.commons.beanutils进行转换  */  class A {              public static Object mapToObje ...

  6. JavaScript 字符串与json对象互转的几种方法

    第一种:浏览器支持的转换方式(Firefox,chrome,opera,safari,ie)等浏览器: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON. ...

  7. SQL SERVER 将表字段值0和1互转的几种方法

    需求: 如果表字段的值为 0 则将其修改为1 ,如果表字段的值为 1 则将其修改为 0. 方法一 end 方法二 ) 方法三 )

  8. int 和String之间的互转

    int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...

  9. java中定时器的四种方法

    package com.lid; import java.util.Calendar; import java.util.Date; import java.util.Timer; import ja ...

随机推荐

  1. js切换实现背景颜色

    <script type="text/javascript"> obj=document.getElementsByTagName('h1'); ;i<obj.l ...

  2. eclipse安装springsource-tool-suite

    到http://spring.io/tools/sts/all找到安装的eclipse对应的springsource-tool-suite版本,复制下载的网址 然后在eclipse的install n ...

  3. FBX .NET

    https://github.com/returnString/ManagedFBX http://fbx.codeplex.com/ http://code.openhub.net/project? ...

  4. Ankh不起作用的解决方法

    请检查Visual Studio 2008的Tool > Options... > Source Control,在下拉菜单中选择插件.

  5. Mac下切换bash

    MAC下的终端是神器,安装ZSH后,突然间发现太不好操作了,即使再配上oh-my-zsh也感觉不爽. 然后想删除,自己尝试了下找不到命令删除,于是在网上找找,但是也没找到.最后直接进隐藏文件夹,直接一 ...

  6. jQuery,title、仿title功能整理

    如图:仿 title="查看" note="查看",note 可换成其他 样式: /*重写,标签title层*/#titleRewrite {position: ...

  7. C# Redis消息队列例子

    class Program { //版本2:使用Redis的客户端管理器(对象池) public static IRedisClientsManager redisClientManager = ne ...

  8. 15分钟学会使用Git和远程代码库

    git是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本 ...

  9. Java Programming Test Question 2

    public class JPTQuestion2 { public static void main(String[] args) { String s3 = "JournalDev&qu ...

  10. SQL存储过程来调用webservice

    如果用存储过程来调用webservice 那存储过程的功能感觉能做好多事情了? 别自欺欺人了.那些功能还是webservice来实现的... 完整的webservice代码:(也是默认的,新建.asm ...