JAVA中的TXT四种存储格式判断
来源:互联网 发布:第一版主网小说网网络 编辑:程序博客网 时间:2024/05/16 19:30
读取文件中方的的第一个字符”T”,转换成字节数组,前三个字节就可以判断TXT的存储格式,具体实现代码如下:
// 读取文件 public List<String> readFileByLines(String fileName) { List<String> list = new ArrayList<String>(); File file = new File(fileName); BufferedReader reader = null; InputStream inputStream = null; try { // 判断的文件输入流 inputStream = new FileInputStream(file); byte[] head = new byte[3]; inputStream.read(head); //判断TXT文件编码格式 if (head[0] == -1 && head[1] == -2 ){ //Unicode -1,-2,84 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Unicode")); }else if (head[0] == -2 && head[1] == -1 ){ //Unicode big endian -2,-1,0,84 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-16")); }else if(head[0]==-17 && head[1]==-69 && head[2] ==-65) { //UTF-8 -17,-69,-65,84 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); }else{ //ANSI 84 = T reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"gb2312")); } String tempString = null; int line = 1; while ((tempString = reader.readLine()) != null) { list.add(tempString); line++; } inputStream.close(); reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e1) { } } if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } return list; }
注意点:作为判断的文件输入流,不能作为输入字节流的参数,因为在判断的时候已经读取过数据了,再次使用将相当于使用不同的编码进行了拆分,会造成乱码,因此需要重新构建文件输入流作为输入字节流的参数
阅读全文
0 0
- JAVA中的TXT四种存储格式判断
- JAVA 判断TXT文件编码格式
- java 判断txt文件的编码格式
- java判断txt文件的编码格式
- 使用java判断TXT文件的编码格式
- java txt 编码格式
- 将txt文本格式存储的词id表示的数据集存为matlab中的sparse格式
- C语言中的四种存储类型
- C语言中的四种存储类型
- JAVA 判断EMAIL格式
- java 判断格式
- matlab中的矩阵存储成txt
- unity中的TXT存储与读取
- java 流 写入txt文件, 并且设置txt编码格式
- java获取txt文件编码格式
- Java读取txt文件编码格式
- 如何判断一个txt文件的编码格式
- txt文件ANSI和UTF-8存储格式问题---阿西巴
- IDEA 错误:找不到或无法加载主类
- java读取web项目下json文件为map集合
- 网易数字游戏
- mysql 5.7.18版本 sql_mode 问题
- spring boot下比较tomcat与undertow性能
- JAVA中的TXT四种存储格式判断
- 如何应对难以重现的偶发性bug?
- J2EE相关随笔
- ThreadPoolExecutor源码分析(一):重要成员变量
- 编译工具的php项目(一)
- js中getBoundingClientRect()方法详解
- 下拉刷新与加载,不影响listview或者recycleview本身
- 欢迎使用CSDN-markdown编辑器
- java中网络编程DatagramPacke类------UDP协议