• 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();
        }
  • 相关阅读:
    Studio更新
    gradle 两种更新方法
    Handler基本用法
    使用git克隆指定分支的代码
    Bugly最简单的配置方法
    setTag,getTage复用
    Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
    Android应用如何跳转到应用市场详情页面
    bzoj千题计划249:bzoj5100: [POI2018]Plan metra
    bzoj千题计划248:bzoj3697: 采药人的路径
  • 原文地址:https://www.cnblogs.com/epmouse/p/6950987.html
Copyright © 2020-2023  润新知