• 生成.txt文件
  • 生成.csv文件
  • 生成.xls文件
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List; import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class CreateFileUtil { /**
* 生成.TXT格式文件,行数几乎无上限
*/
public static boolean createTxtFile(List<Object[]> rows, String filePath, String fileName) {
// 标记文件生成是否成功
boolean flag = true; try {
// 含文件名的全路径
String fullPath = filePath + File.separator + fileName + ".txt"; File file = new File(fullPath);
if (file.exists()) { // 如果已存在,删除旧文件
file.delete();
}
file = new File(fullPath);
file.createNewFile(); // 格式化浮点数据
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(10); // 设置最大小数位为10 // 格式化日期数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // 遍历输出每行
PrintWriter pfp = new PrintWriter(file, "UTF-8"); //设置输出文件的编码为utf-8
for (Object[] rowData : rows) {
StringBuffer thisLine = new StringBuffer("");
for (int i = 0; i < rowData.length; i++) {
Object obj = rowData[i]; // 当前字段 // 格式化数据
String field = "";
if (null != obj) {
if (obj.getClass() == String.class) { // 如果是字符串
field = (String) obj;
} else if (obj.getClass() == Double.class || obj.getClass() == Float.class) { // 如果是浮点型
field = formatter.format(obj); // 格式化浮点数,使浮点数不以科学计数法输出
} else if (obj.getClass() == Integer.class || obj.getClass() == Long.class
|| obj.getClass() == Short.class || obj.getClass() == Byte.class) { // 如果是整形
field += obj;
} else if (obj.getClass() == Date.class) { // 如果是日期类型
field = sdf.format(obj);
}
} else {
field = " "; // null时给一个空格占位
} // 拼接所有字段为一行数据,用tab键分隔
if (i < rowData.length - 1) { // 不是最后一个元素
thisLine.append(field).append("\t");
} else { // 是最后一个元素
thisLine.append(field);
}
}
pfp.print(thisLine.toString() + "\n");
}
pfp.close(); } catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
} /**
* 生成.csv格式文件,行数几乎无上限
*/
public static boolean createCsvFile(List<Object[]> rows, String filePath, String fileName) {
// 标记文件生成是否成功
boolean flag = true; // 文件输出流
BufferedWriter fileOutputStream = null; try {
// 含文件名的全路径
String fullPath = filePath + File.separator + fileName + ".csv"; File file = new File(fullPath);
if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) { // 如果已存在,删除旧文件
file.delete();
}
file = new File(fullPath);
file.createNewFile(); // 格式化浮点数据
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(10); // 设置最大小数位为10 // 格式化日期数据
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // 实例化文件输出流
fileOutputStream = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GB2312"), 1024); // 遍历输出每行
Iterator<Object[]> ite = rows.iterator();
while (ite.hasNext()) {
Object[] rowData = (Object[]) ite.next();
for (int i = 0; i < rowData.length; i++) {
Object obj = rowData[i]; // 当前字段
// 格式化数据
String field = "";
if (null != obj) {
if (obj.getClass() == String.class) { // 如果是字符串
field = (String) obj;
} else if (obj.getClass() == Double.class || obj.getClass() == Float.class) { // 如果是浮点型
field = formatter.format(obj); // 格式化浮点数,使浮点数不以科学计数法输出
} else if (obj.getClass() == Integer.class || obj.getClass() == Long.class
|| obj.getClass() == Short.class || obj.getClass() == Byte.class) { // 如果是整形
field += obj;
} else if (obj.getClass() == Date.class) { // 如果是日期类型
field = sdf.format(obj);
}
} else {
field = " "; // null时给一个空格占位
}
// 拼接所有字段为一行数据
if (i < rowData.length - 1) { // 不是最后一个元素
fileOutputStream.write("\"" + field + "\"" + ",");
} else { // 是最后一个元素
fileOutputStream.write("\"" + field + "\"");
}
}
// 创建一个新行
if (ite.hasNext()) {
fileOutputStream.newLine();
}
}
fileOutputStream.flush();
} catch (Exception e) {
flag = false;
e.printStackTrace();
} finally {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
} /**
* 生成.xls格式文件,单页上限: 03版是65536行 ,07版的是1048576行, 10版不知
*/
public static boolean createXlsFile(List<Object[]> rows, String filePath, String fileName) {
// 标记文件生成是否成功
boolean flag = true; try {
// 创建一个webbook,对应一个Excel文件
XSSFWorkbook wb = new XSSFWorkbook(); // 在webbook中添加一个sheet,对应Excel文件中的sheet
XSSFSheet sheet = wb.createSheet(fileName); // 遍历输出每行
for (int i = 0; i < rows.size(); i++) {
Object[] rowData = rows.get(i); // 每一行的数据
XSSFRow row = sheet.createRow(i);
for (int j = 0; j < rowData.length; j++) {
XSSFCell cell = row.createCell(j);
// 假设只有三种类型的数据
if (rowData[j].getClass() == String.class) { // String类型数值
cell.setCellValue((String) rowData[j]);
} else if (rowData[j].getClass() == double.class) { // double类型数值
cell.setCellValue((Double) rowData[j]);
} else if (rowData[j].getClass() == int.class) { // int类型数值
cell.setCellValue((Integer) rowData[j]);
}
}
} String fullPath = filePath + File.separator + fileName + ".xls";// 含文件名的全路径
            File file = new File(fullPath);
if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) { // 如果已存在,删除旧文件
file.delete();
}
file = new File(fullPath);
file.createNewFile();
            FileOutputStream fileOut = new FileOutputStream(file); // 写出数据到文件
wb.write(fileOut);
fileOut.close();
} catch (Exception e) {
flag = false;
e.printStackTrace();
} return flag;
} }

java实现写大量数据到文件中的更多相关文章

  1. MySQL导出数据到文件中的方法

    MySQL导出数据到文件中的方法 1.导出数据到txt文件中实例:把数据表studscoreinfo中所有数据导出到指定的位置方法:select * from 表名 into outfile 指定导出 ...

  2. java poi 写入大量数据到excel中

    最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数 ...

  3. java对象序列化并存储到文件中

    ● 如何将一个Java对象序列化到文件里 使用输入输出流,,一个是ObjectOutputStream 对象,ObjectOutputStream 负责向指定的流中写入序列化的对象.当从文件中读取序列 ...

  4. Java Slf4j日志配置输出到文件中

    1.概述 新项目需要增加日志需求,所以网上找了下日志配置,需求是将日志保存到指定文件中.网上找了下文章,发现没有特别完整的文章,下面自己整理下. 1.Java日志概述 对于一个应用程序来说日志记录是必 ...

  5. awk 统计数据在文件中的出现次数

    突然发现awk原来可以统计同一数据在要处理的文件中所出现的次数.原来的时候为了分析数据还自己写程序,哎,无语,当时还以为自己多强,手工分析不过来的东西写程序处理.现在想来实在是年少轻狂.解决问题嘛,不 ...

  6. Java导出List集合到txt文件中——(四)

    有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...

  7. windows 批处理把所有java源码导入一个txt文件中

    首先在src下搜*.java,把搜到的文件全拷出来放在allsrc目录下, 然后在allsrc目录下建个run.bat,键入以下内容for %%i in (*.java)  do type %%i&g ...

  8. mysql导出指定字段或指定数据到文件中

    使用mysqldump把mysql数据库的数据导出到文件中还是挺方便的:比如说要导出baijunyao数据库: // mysqldump -u用户名 -p 数据库名 [表名]> 导出的文件名 m ...

  9. SSM框架中写sql在xml文件中

    第一种(用Mapper.xml映射文件中定义了操作数据库sql) 注意点: 1.#{}与${} #{}表示一个占位符,使用占位符可以防止sql注入, ${}通过${}可以将parameterType传 ...

随机推荐

  1. python高级编程之描述符与属性03

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #属性Property #提供了一个内建描述符类型,它知道如何将一个 ...

  2. Top 15 Tools To Make Animated GIFs From Images & Video

    Creating an animated GIF picture from photos or video with Adobe Photoshop is easy, but not everyone ...

  3. 连载:面向对象葵花宝典:思想、技巧与实践(33) - ISP原则

     ISP,Interface Segregation Principle,中文翻译为"接口隔离原则". 和DIP原则一样,ISP原则也是大名鼎鼎的Martin大师提出来的,他在19 ...

  4. [HeadFirst-HTMLCSS入门][第九章盒模式]

    新属性 line-height 行间距 line-height: 1.6em; border 边框 属性值 solid 实线 double 双实线 groove 一个槽 outset 外凸 inset ...

  5. vs2013 JS代码提示

    1.JS提示 在Js文件头部加 /// <reference path="ext-all-dev.js" /> 要求引用的js和本js在同一目录,否则需要全部路径

  6. SELECT TOP column FROM table [ORDER BY column [DESC]]

    如果想返问表中行的子集,仅需要返回特定数量的记录,而不管符合条件的行有多少.要返回排在前面的值,可以有两个选择:指定固定数量的行,或者指定总行数的百分比.SQL Server不对这些数据做任何分析,共 ...

  7. CSS 设计彻底研究(五)文字与图像

    第五章 文字与图像 5.1.2 设置字体 通过font-family属性设置字体.可以声明多种字体,字体之间用逗号分隔开.如一些字体名称中间有空格,需用双引号将其引起来,使浏览器知道这是一种字体的名称 ...

  8. 进阶笔记(2)——JavaScript语言精碎

    正则       /     正则表达式      / ^   表示字符串开始 (?:...)   表示一个非捕获型分组(没多大意义) 后缀 ? 表示匹配 0 或 1次 ( ... )   表示捕获型 ...

  9. Mr. Kitayuta's Colorful Graph 多维并查集

    Mr. Kitayuta's Colorful Graph 并查集不仅可以用于一维,也可以用于高维. 此题的大意是10W个点10W条边(有多种颜色),10W个询问:任意两个节点之间可以由几条相同颜色的 ...

  10. 安卓tabhost和子Activity通信方法

    发现很多同学在问这个问题 1个tabhost对应的类假设是T,假设包含2个子tab,每个是1个activity,假设叫a,b,对应的类假设是A和B 那么有这几个问题 1.a如何调用b的方法,或者说发送 ...