BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));如何兼容mac和windows两种系统的csv文件
时间: 2024-09-20 20:11:49 浏览: 34
当你需要在Mac和Windows系统上读取CSV文件时,使用`BufferedReader`配合`InputStreamReader`通常可以处理大部分文本文件格式,包括CSV。但是,由于这两种操作系统使用的换行符不同(Mac使用`\r\n`,Windows使用`\n`),如果你直接创建一个`InputStreamReader`,可能会导致解析错误。为了避免这个问题,你可以按照以下步骤操作:
1. 首先创建一个`InputStreamReader`,传入一个`FileInputStream`,但指定编码为平台无关的,比如UTF-8。
```java
InputStream fileInputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
```
2. 然后使用`BufferedReader`读取数据,这里不需要特别处理换行符,因为`BufferedReader`会自动将输入流中的换行符转换为你选择的默认行结束符(通常是`\n`)。
```java
BufferedReader bufferedReader = new BufferedReader(reader);
```
这样做的前提是CSV文件的内容本身使用的是标准的 `\n` 结束行,如果是混合了换行符的情况,可能还需要额外检查和处理。如果确实存在混杂的换行符,你可以使用`new LineReader(fileInputStream, StandardCharsets.UTF_8)`替换`BufferedReader`,它可以根据输入流的本地格式自动识别并调整行分隔符。
阅读全文