[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. 利用百度开发者中心的api实现地图及周边的搜索

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  2. Spring MVC学习笔记——POJO和DispatcherServlet

    POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和EJB(Enter ...

  3. JavaWeb学习笔记——表达式语言

    使用表达式语言,可以方便地访问标志位(JSP中有page(pageContext).request.session和application4种标志位)中的属性内容,可以避免出现许多的Scriptlet ...

  4. Windows 无法自动将 IP 协议堆栈绑定到网络适配器。解

    Windows 无法自动将 IP 协议堆栈绑定到网络适配器.解  昨天断网了,所以把珍藏已久的无线网卡拿出来蹭网.我系统是Windows 7 但是装上去东显示已启用,就是用不了,用windows诊断是 ...

  5. cmake 编译 c++ dll 的一个例子(更新1)

    CMakeLists.txt project(xxx) add_library(xxx SHARED xxx.cpp) add_executable(yyy yyy.cpp) target_link_ ...

  6. xhprof安装使用

    安装: 到pecl官网下载xhprof的最新版:http://pecl.php.net/package/xhprof wget http://pecl.php.net/get/xhprof-0.9.4 ...

  7. sqlserver下载

    https://msdn.microsoft.com/zh-cn/sqlserver/default.aspx

  8. RL中“#” “?” &“”号的作用

    阅读目录 1. # 2. ? 3. & 回到顶部 1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http ...

  9. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

  10. EF: Raw SQL Queries

    Raw SQL Queries Entity Framework allows you to query using LINQ with your entity classes. However, t ...