前言:
目前大家对“java导出大批量数据为txt”大体比较珍视,小伙伴们都需要剖析一些“java导出大批量数据为txt”的相关文章。那么小编同时在网络上汇集了一些有关“java导出大批量数据为txt””的相关内容,希望小伙伴们能喜欢,各位老铁们一起来了解一下吧!由于第三方给出的csv编码格式问题导致无法导入指定的库表,网上找了许多转换的插件总是不满意。折腾了大半天想想还是自己改造下吧。该工具包解决了几乎所有的编码问题,若是不足之处请指出。由于文件暂存在String类型里面,要是文件太大的话会报内存溢出的错误可以自行调整下代码。
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.nio.charset.Charset;import java.nio.charset.UnsupportedCharsetException;public class FileCharsetConverter { public static void main(String[] args) throws Exception { String dirPath ="C:\\Users\\oftoo\\Desktop\\服务默认\\原编码\\xx\\xx"; File dirFile = new File(dirPath); File[] files = dirFile.listFiles(); if (null == files) { System.out.println("路径:" + dirPath + ",该文件夹下没有文件"); } else { for (int i = 0; i < files.length; i++) { File file = files[i]; String destFileName = file.getCanonicalPath(); File destFile = new File(destFileName); if (destFile.exists()) { convert(destFile.getCanonicalPath(), "UTF-16LE", "GBK", new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith("csv"); } }); } else { System.out.println("路径:" + dirPath + ",该文件夹下没有文件"); } } System.out.println("编码转换结束"); } /*convert("C:\\Users\\xieyh\\Desktop\\测试编码\\LRL_HairStore_Tmall_Acxiom_Transaction_20170619.csv", "UTF-16LE", "GBK", new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith("csv"); } }); */ } public static String getParentPath(File file) { if (null != file && file.exists()) { return file.getParent(); } return ""; } /** * 把指定文件或目录转换成指定的编码 * * @param fileName * 要转换的文件 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @throws Exception */ public static void convert(String fileName, String fromCharsetName, String toCharsetName) throws Exception { convert(new File(fileName), fromCharsetName, toCharsetName, null); } /** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @throws Exception */ public static void convert(File file, String fromCharsetName, String toCharsetName) throws Exception { convert(file, fromCharsetName, toCharsetName, null); } /** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @param filter * 文件名过滤器 * @throws Exception */ public static void convert(String fileName, String fromCharsetName, String toCharsetName, FilenameFilter filter) throws Exception { convert(new File(fileName), fromCharsetName, toCharsetName, filter); } /** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @param filter * 文件名过滤器 * @throws Exception */ public static void convert(File file, String fromCharsetName, String toCharsetName, FilenameFilter filter) throws Exception { if (file.isDirectory()) { File[] fileList = null; if (filter == null) { fileList = file.listFiles(); } else { fileList = file.listFiles(filter); } for (File f : fileList) { convert(f, fromCharsetName, toCharsetName, filter); } } else { if (filter == null || filter.accept(file.getParentFile(), file.getName())) { String fileContent = getFileContentFromCharset(file, fromCharsetName); saveFile2Charset(file, toCharsetName, fileContent); } } } /** * 以指定编码方式读取文件,返回文件内容 * * @param file * 要转换的文件 * @param fromCharsetName * 源文件的编码 * @return * @throws Exception */ public static String getFileContentFromCharset(File file, String fromCharsetName) throws Exception { if (!Charset.isSupported(fromCharsetName)) { throw new UnsupportedCharsetException(fromCharsetName); } InputStream inputStream = new FileInputStream(file); InputStreamReader reader = new InputStreamReader(inputStream, fromCharsetName); char[] chs = new char[(int) file.length()]; reader.read(chs); String str = new String(chs).trim(); reader.close(); return str; } /** * 以指定编码方式写文本文件,存在会覆盖 * * @param file * 要写入的文件 * @param toCharsetName * 要转换的编码 * @param content * 文件内容 * @throws Exception */ public static void saveFile2Charset(File file, String toCharsetName, String content) throws Exception { if (!Charset.isSupported(toCharsetName)) { throw new UnsupportedCharsetException(toCharsetName); } OutputStream outputStream = new FileOutputStream(file); OutputStreamWriter outWrite = new OutputStreamWriter(outputStream, toCharsetName); outWrite.write(content); outWrite.close(); } }
---------------------
CSDN也是我的博客
作者:咖啡猫没有梦
来源:CSDN
原文:
版权声明:本文为博主原创文章,转载请附上博文链接!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java导出大批量数据为txt