• FileReader乱码


    出现原因:FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成结果不能还原最初的字符。

    /**
     * 获得文件内容
     * @param file
     * @return
    */
    public String getFileContent(File file){
    		
    		InputStreamReader reader = null;
    		StringBuffer result = new StringBuffer();
    		try {
    			reader = new InputStreamReader(new FileInputStream(file),"gbk");
    			
    			int ch = reader.read();
    			while(ch != -1){
    				result.append((char)ch);
    				ch = reader.read();
    			}
    			reader.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			reader = null;
    		}
    		return result.toString();
    	}
    

     FileReader和FileWriter的使用:可用于己知输入编码和输出编码情况下:

    public List<String> getFileContent(){
    		
    		List<String> list = new ArrayList<String>();
    		
    		File f = null;
    		BufferedReader buff = null;
    		BufferedWriter out = null;
                    StringBuffer buffer = new StringBuffer();
    		try {
    			f = new File("resource/domain0108.csv");
    			buff = new BufferedWriter(new FileWriter(f));
    			
    			String temp = buff.readLine();
    			while(true){
    				if(temp == null){
    					break;
    				}
    				/*byte[] bb = temp.getBytes("utf-8");
    				temp = new String(bb,"gbk");*/
    				list.add(temp + "
    ");
                                    buffer.append(temp + "
    ");
    				temp = buff.readLine();
    			}
    			System.out.println("InfoPorcesser.getFileContent返回文件内容列表成功"+list.size());
                            out.write(buffer.toString());
                            out.flush();
                            out.close();
    			buff.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			buff = null;
    		}
    		
    		return list;
    	}                                                    
    
  • 相关阅读:
    简介浏览器内核与JavaScript引擎
    一句SQL完成动态分级查询
    C# 语言习惯
    React的组件间通信
    React的学习(上)
    火狐浏览器所有的快捷键
    视频输出端口及颜色空间介绍
    live555
    ffplay的快捷键以及选项 FFmpeg 基本用法 FFmpeg常用基本命令 ffmpeg常用转换命令,支持WAV转AMR
    黑客技术资源
  • 原文地址:https://www.cnblogs.com/liuyq/p/4217837.html
Copyright © 2020-2023  润新知