zoukankan      html  css  js  c++  java
  • android读去txt 为string

    直接用字节流读取,可保留原格式,在拼装字符串的时候可以把编码转为utf-8 防止乱码,但是根据缓存byte数组的大小不同,会出现部分字符乱码情况

    public static String readToText(String filePath) {//按字节流读取可保留原格式,但是有部分乱码情况,根据每次读取的byte数组大小而变化
            StringBuffer txtContent = new StringBuffer();
            byte[] b = new byte[2048];
            InputStream in = null;
            try {
                in = new FileInputStream(filePath);
                int n;
                while ((n = in.read(b)) != -1) {
                    txtContent.append(new String(b, 0, n, "utf-8"));
                }
                in.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return txtContent.toString();
        }

    使用字符流的readline读取出来不能保留文档原格式,里面的空格换行都失效了。但是没有乱码。最终解决办法,是采用此方法,然后手动拼接换行符。代码如下:

    public static String readtxt(String path) {//按行读取,不能保留换行等格式,所以需要手动添加每行换行符。
    //        String result = "";
            StringBuffer txtContent = new StringBuffer();
            File file = new File(path);
            try {
                int len = 0;
                FileInputStream in = new FileInputStream(file);
                InputStreamReader reader = new InputStreamReader(in, "utf-8");
                BufferedReader br = new BufferedReader(reader);
                String s = null;
                while ((s = br.readLine()) != null) {
                    if (len != 0) {// 处理换行符的问题,第一行不换行
                        txtContent.append(new String(("
    " + s).getBytes(), "utf-8"));
                    } else {
                        txtContent.append(new String(s.getBytes(), "utf-8"));
                    }
                    len++;
                }
                reader.close();
                in.close();
            } catch (UnsupportedEncodingException | FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        /*try {
            BufferedReader br = new BufferedReader(new FileReader(new File(path)));
            String s = null;
            while((s=br.readLine())!=null){
                result = result + "
    " + s;
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
            return txtContent.toString();
        }
  • 相关阅读:
    HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)
    Linux虚拟机添加新硬盘的全程图解
    Servlet 单例多线程
    MapReduce类型与格式(输入与输出)
    hbase集群的启动,注意几个问题
    spring 的IoC的个人理解
    深入Java核心 Java中多态的实现机制(1)
    spring mvc 请求转发和重定向(转)
    XML中<beans>中属性概述
    hadoop+javaWeb的开发中遇到包冲突问题(java.lang.VerifyError)
  • 原文地址:https://www.cnblogs.com/epmouse/p/6950987.html
Copyright © 2011-2022 走看看