就是不做加工的把文件内容按换行符读到 byte 数组里
randomaccessfile readline 再 getbytes(iso8859-1)这种存在乱码时可以还原么?
还有没有更高效的方法?
randomaccessfile readline 再 getbytes(iso8859-1)这种存在乱码时可以还原么?
还有没有更高效的方法?
|
armstrongMay 10, 2017
1
可以试试 Guava,Files.readLine() 或者 readLines()
|
|
mosliuMay 10, 2017
2
(new BufferedReader(new InputStreamReader(new FileInputStream("path"),"utf-8"))).readLine()
|
|
kiwi95May 10, 2017
3
scanner
|
|
mosliuMay 10, 2017
4
或者直接
Files.readAllLines("path") 后面接 lambda 很方便 |
|
mosliuMay 10, 2017
6
锟斤拷乱码?
读的时候直接按照编码读不就好了? |
|
SoloCompanyMay 10, 2017
7
@mosliu 大部分的编码方式的编码空间都是不可还原的(意思是说 decode 为 string 后再 encode 无法保证得到原始的 byte 序列),包括我们最常见的 utf8 以及 gb18030,如果你希望可 100% 还原,那么可以选择 Files.readAllLines(Path, ISO_8859_1), 然后每行都要先使用 ISO_8859_1 重新 encode 回 bytes 再强制编码转换
|
|
ihuotuiMay 10, 2017 via iPhone
8
要高效率用 nio
|
|
Arthur2e5May 10, 2017
9
唔我问个白痴问题:在各种 UTF-16 和 UTF-32 存在的情况下,是如何做到在阅读未知编码的文件下考虑换行符的?(逃)
|
|
lululauMay 10, 2017
10
Files#lines
|
|
mosliuMay 10, 2017
12
@SoloCompany 不是我问的。。。
我明白 所以才说 锟斤拷 :D:D:D |
|
13
|
|
OuyanganMay 11, 2017
14
common 的 fileUtil 试试
|