[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. 运算符++,--的使用及 while循环测试的用处

    前++与后++的区别: b=3+(++a);//a=a+1;b=3+a; b=3+(a++);//b=3+a;a=a+1; while (true)( 循环语句,可以实现程序的多次测试) { Cons ...

  2. WSADATA

    中文名 WSADATA 操作系统 Windows CE 版本: 大于等于1.0 定义位置: Winsock.h 目录 1 说明 2 结构原型 3 参数说明 4 备注 说明编辑 WSADATA结构被用来 ...

  3. 史上最全的Linux常用命令

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  4. JavaWeb学习笔记——Tomcat相关

    Tomcat目录分析 1.bin 存放启动和关闭Tomcat的脚本文件 2.conf  存放Tomcat服务器的各种配置文件 3.lib  存放Tomcat服务器的支持jar包 4.logs  存放T ...

  5. Mac OS下配置Eclipse C++的方法

    http://nonlz.blog.163.com/blog/static/128872032201262622921622/

  6. GIT安装完需要做以下配置

    安装完GIT后需要做以下配置: 一.找到git的安装目录,查找etc目录下的gitconfig配置文件,编辑此文件在最后一行添加如下内容: [gui]     encoding = utf-8 [sv ...

  7. VS2013-解决error C4996: 'fopen'问题

    VS2013中如何解决error C4996: 'fopen'问题 初次使用vs系列编辑器编写控制台应用程序时常出现如下错误: error C4996: 'fopen': This function ...

  8. Tween + 缓动函数

    Unity-Tween http://www.cnblogs.com/MrZivChu/p/UnityTween.html iTween: iTween大解构(一)之抛物线移动 http://blog ...

  9. Ios 消息推送

    手把手教你做iOS推送 http://www.cocoachina.com/industry/20130321/5862.html http://www.cnblogs.com/cdts_change ...

  10. C++ compile issue

    You can do so via right-click -> Properties on a file or a selection of files in Solution Explore ...