java 输出流写入 在使用 mysql 的 select * from a into outfile 'E:\\a.csv' character set utf8
, 如果字段中有换行,会被转义成 \\n
,Tab 转义为 \\t
,无法正常处理数据文件,使用 java 处理该文件,有一个现象,写入文件尾会出现’\u0000’乱码,乱码数量取决于定义的 buff 大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 try ( BufferedReader br = new BufferedReader ( new InputStreamReader ( new FileInputStream (filePath), "utf-8" ),1024 *1024 *100 ); BufferedWriter bw = new BufferedWriter ( new OutputStreamReader ( new FileOutputStream (tofilePath), "utf-8" ),1024 *1024 *100 ); ){ bw.write("" ); char [] buff = new char [10249 *1024 *10 ]; while (br.read(buff)!=-1 ){ String str = new String (buff); str = str.replaceAll("\\r" ,"" ); str = str.replaceAll("\\\\\\n" ,"" ); bw.append(str); } }catch (IOException e){} ...
对代码进行修改,去掉文件尾乱码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 try ( BufferedReader br = new BufferedReader ( new InputStreamReader ( new FileInputStream (filePath), "utf-8" ),1024 *1024 *100 ); BufferedWriter bw = new BufferedWriter ( new OutputStreamReader ( new FileOutputStream (tofilePath), "utf-8" ),1024 *1024 *100 ); ){ bw.write("" ); int N = 10249 *1024 *10 ; char [] buff = new char [N]; int len = 0 ; while ((len=br.read(buff))!=-1 ){ String str = new String (buff,0 ,len); str = str.replaceAll("\\r" ,"" ); str = str.replaceAll("\\\\\\n" ,"" ); bw.append(str); len = 0 ; } }catch (IOException e){} ...