目录
一、字节流>字符流>字符串
二、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();
}
相关文章
暂无评论...