📄 materialimport.java
字号:
/**
*
*/
package com.qrsx.storage.view;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;
import com.qrsx.storage.manager.MaterialManager;
import com.qrsx.storage.model.Material;
/**
* @author Administrator
*
*/
public class MaterialImport {
private MaterialManager materialManager;
private String filePath;
public static void main( String[] args ) throws Exception{
MaterialManager materialManager = new MaterialManager();
MaterialImport mi = new MaterialImport(materialManager,"D:\\qingdao software\\2009授课班级\\课件\\第一阶段\\库存管理090305\\Material.txt");
// //读取文件内容
// StringBuffer content = mi.readFile();
//
// //解析文件内容
// List<Material> materials = mi.parseFileToMaterial(content.toString());
mi.importMaterial();
System.out.println("OK");
}
/**
* 构造方法,初始化 materialManager
* @param mgr
*/
public MaterialImport( MaterialManager mgr, String filePath ){
this.materialManager = mgr;
this.filePath = filePath;
}
public void importMaterial() throws Exception{
//读取文件内容
StringBuffer content = readFile();
//解析文件内容
List<Material> materials = parseFileToMaterial(content.toString());
//导入数据库
materialManager.addAllByBatch(materials);
}
/**
* 读取文件中的数据
* @param filePath
* @return
*/
private StringBuffer readFile( ) throws Exception {
//实例化文件输入流
FileInputStream fis = new FileInputStream(filePath);
//获取文件通道
FileChannel fc = fis.getChannel();
//实例化缓冲区
ByteBuffer buffer = ByteBuffer.allocate(1024);
//实例化字符串缓冲区
StringBuffer sb = new StringBuffer();
//读取数据
while( fc.read(buffer)!=-1 ){
//位置、边距重置
buffer.flip();
//buffer.asCharBuffer();
//以下操作可能存在如下问题:最后一个字节是半个汉字,会出乱码的
//将字节数组转换成字符串
String b = new String(buffer.array(),0,buffer.limit());
//加入到字符串缓冲区
sb.append(b);
//清空缓冲区
buffer.clear();
}
return sb;
}
/**
* 解析文件内容
* @param content
* @return
* @throws Exception
*/
private List<Material> parseFileToMaterial( String content ) throws Exception {
//将数据按行分割
String[] materials = content.split("\n");
//实例化集合,用于存放物料对象
List<Material> list = new ArrayList<Material>();
//遍历集合,注意:从第二条开始遍历,第一条是数据表字段名称
for( int i=1; i<materials.length; i++ ){
//将每行数据分割成多个字段值
String[] fields = materials[i].split("\t~");
//保证字段有效性
if( fields==null || fields.length<7 ){
continue;
}
//组装Material
Material material = new Material();
material.setId( Integer.valueOf(fields[0]) );
material.setName(fields[1]);
material.setClient(fields[2]);
material.setUnit(fields[3]);
material.setPrice(Float.valueOf(fields[4]));
material.setTotal(Float.valueOf(fields[5]));
material.setNote(fields[6]);
list.add(material);
}
return list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -