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();
        }
  • 相关阅读:
    一文总结十大经典排序算法(思维导图 + 动图演示 + 代码实现 C/C++/Python + 致命吐槽)
    VulnHub——Kioptrix Level 2
    史上最全Redis面试题(2020最新版)
    js 根据秒数获取多少小时,多少分钟,多少秒
    RabbitMQ的死信队列
    女朋友也能看懂的多线程同步
    RabbitMQ的备份交换器
    BI Publisher(rtf)模板开发语法大全
    修改CUSTOM.PLL文件调用客户化FORM&修改标准FORM
    EBS客户化迁移SQL
  • 原文地址:https://www.cnblogs.com/epmouse/p/6950987.html
Copyright © 2011-2022 走看看