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();
        }
  • 相关阅读:
    功能:Java注解的介绍和反射使用
    功能:@Vaild注解使用及扩展
    转载:微信小程序view布局
    功能:Java8新特性steam流
    功能:Linux运行jar包Shell脚本
    转载:Windows使用tail -f 监控文件
    转载:java.math.BigDecimal 比较大小
    问题:跨域及解决方案
    基于 @SelectProvider 注解实现无侵入的通用Dao
    SpringBoot中的异步操作与线程池
  • 原文地址:https://www.cnblogs.com/epmouse/p/6950987.html
Copyright © 2011-2022 走看看