栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

读取字符串,分割,保存到csv中

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读取字符串,分割,保存到csv中

package com.fy.service.impl;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;

public class Test3 {
public static void main(String[] args) throws Exception {
File f = new File(“D:new.txt”);
String sourceStr = readtxtContent(f);
if ("".equals(sourceStr) || sourceStr == null) {
System.out.print(“文件为空”);
return;
}
List listData = getListData(sourceStr);
boolean Flag=createCsvFile(listData,“D:CSVDir”,“csvFile”);
if (Flag == true)
{
System.out.print(“CSV文件创建成功!”);
}else {
System.out.print(“CSV文件创建失败!”);
}

}


public static String readtxtContent(File file) {
	StringBuilder result = new StringBuilder();
	try {
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
		String s = null;
		while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行
			result.append(System.lineSeparator() + s);
		}
		br.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return result.toString();
}


public static List getListData(String sourceStr) {
	// 用于返回的集合
	List list = new ArrayList<>();
	// 去除字符串的双引号
	String trimStr = sourceStr.replace(""", "");
	// 截取头部信息
	// String subStr = trimStr.substring(49);
	// 下面是数据处理
	String delimiter = ",";
	int partitionSize = 9;
	for (Iterable iterable : Iterables.partition(Splitter.on(delimiter).split(trimStr), partitionSize)) {
		String join = Joiner.on(delimiter).join(iterable);
		if ("".equals(join) || join == null) {
			return list;
		}
		Object[] split = join.split(",");
		if (split.length == 8) {
			split = Arrays.copyOf(split, split.length + 1);
			split[8] = "";
		}
		list.add(split);

	}
	return list;
}


public static boolean createCsvFile(List 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 ite = rows.iterator();

		while (ite.hasNext()) {
			Object[] rowData = (Object[]) ite.next();
			for (int i = 0; i < rowData.length; i++) {
				Object obj = rowData[i]; // 当前字段
				obj = obj+"t";
				// 格式化数据
				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) // 不是最后一个元素
					{
						// System.out.print("""+field+"""+",");
						fileOutputStream.write(""" + field + """ + ",");
					} else {
						// 最后一个元素
						fileOutputStream.write(""" + field + """);
					}
				}
				// 创建一个新行
				if (ite.hasNext()) {
					// fileOutputStream.newline();
				}
			}
			fileOutputStream.newline(); // 换行,创建一个新行;
		}
		fileOutputStream.flush();
	} catch (Exception e) {
		flag = false;
		e.printStackTrace();
	} finally {
		try {
			fileOutputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return flag;
}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号