Java代码如何打开文本文件呢?
下文笔者将讲述打开文本文件的方法大全
学习完本篇之后,你将彻底掌握打开文本文件的方法,如下所示
返回文本内容
学习完本篇之后,你将彻底掌握打开文本文件的方法,如下所示
打开文本文件
使用Files.lines静态方法,即可读取文本文件
或
使用FileInputStream读取文件为输入流
将输入流转换为字符串或转换为字节数组
例:打开文件返回文本内容
/**
* 打开文件,返回其文本内容,可指定编码
*
* @param filePath 文件磁盘路径
* @param encode 文件编码
* @return 文件内容
*/
public static String openAsText(String filePath, Charset encode) {
LOGGER.info("读取文件[{0}]", filePath);
Path path = Paths.get(filePath);
try {
if (Files.isDirectory(path))
throw new IOException("参数 fullpath:" + filePath + " 不能是目录,请指定文件");
} catch (IOException e) {
LOGGER.warning(e);
return null;
}
try {
StringBuilder sb = new StringBuilder();
Files.lines(path, encode).forEach(str -> sb.append(str));
return sb.toString();
} catch (IOException e) {
LOGGER.warning(e);
}
return null;
}
重载方法默认为 UTF-8 编码
当读入的文件的编码是 ANSI 编码
会报 java.nio.charset.MalformedInputException:Input 异常。
/**
* 打开文件,返回其文本内容
*
* @param filePath 文件的完全路径
* @return 文件内容
*/
public static String openAsText(String filePath) {
return openAsText(filePath, StandardCharsets.UTF_8);
}
此方法不适合读取很大的文件,因为可能存在内存空间不足的问题。这时可以试试旧的方式。
/**
* 旧的方式打开
*
* @param filePath
* @return
*/
public static String openAsTextOld(String filePath) {
LOGGER.info("读取文件[{0}]", filePath);
try {
return byteStream2string(new FileInputStream(new File(filePath)));
} catch (FileNotFoundException e) {
LOGGER.warning(e);
return null;
}
}
另外有打开文件的 Byte[]
/**
* 获得指定文件的 byte 数组
*
* @param file 文件对象
* @return 文件字节数组
*/
public static byte[] openAsByte(File file) {
try {
return inputStream2Byte(new FileInputStream(file));
} catch (FileNotFoundException e) {
LOGGER.warning(e);
return null;
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


