java读取文件

2年前 (2022) 程序员胖胖胖虎阿
242 0 0

目录

一、字节流>字符流>字符串

二、java8简写方式

三、带缓冲的流读取,默认缓冲区8k


/**
 * 读取文件,以String形式返回
 * 字节流和字符流区别
 * 1)定义:字节流在操作时不会用到缓冲区(内存),直接对文件本身进行操作。但字符在操作时使用了缓存区,通过缓存区在操作文件
 * 在硬盘上所有文件都是以字节形式存在(图片、音频、视频),字符在内存中才会形成
 * 2)区别:如果程序频繁对资源做IO操作,使用字节流,效率会很低。使用字符流,把需要操作的数据暂存到内存中,以后直接从内存中读取,避免多次IO操作,提高效率
 * 但是,真正存储和传输数据,都是以字节为单位进行的,字符仅存在于内存,因此,字节使用范围更广
 * 3)使用:字节可以用来读取英文、图片、音视频更好
 * 中文最好使用字符流,可以提高效率
 *
 * @param jsonFile
 * @return
 */

一、字节流>字符流>字符串

    private static String readFile(String jsonFile) {
        StringBuilder stringBuilder = new StringBuilder();

        try {
//             01.FileInputStream(字节流) 实现了InputStream接口,用来读取文件中的字节流,参数是文件或者文件路径+文件名称
            FileInputStream fileInputStream = new FileInputStream(jsonFile);

            // 02.将 fileInputStream(字节流) 流作为参数,转为InputStreamReader(字符流)
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");

            // 03.将 字符流(参数)转为字符串流,带缓冲的流读取,默认缓冲区8k
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            String tempString;

            while ((tempString = bufferedReader.readLine()) != null) {// 直接返回读取的字符串
                // 将字符串 添加到 stringBuilder中
                stringBuilder.append(tempString);
            }
            bufferedReader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    returen stringBuilder.toString();
}

二、java8简写方式

//         java8的简写方式
        try(BufferedReader br= Files.newBufferedReader(Paths.get(jsonFile))) {
            String str;
            while ((str=br.readLine())!=null){
                stringBuilder.append(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

三、带缓冲的流读取,默认缓冲区8k


        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(jsonFile))) {
            String tempString;
            while ((tempString = bufferedReader.readLine()) != null) {
                stringBuilder.append(tempString);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
版权声明:程序员胖胖胖虎阿 发表于 2022年9月9日 上午11:00。
转载请注明:java读取文件 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...