⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 materialimport.java

📁 物料管理 物料登记 批量登记:一次性导入多条物料 单条登记:只能录入一条物料信息 物料管理 更新: 删除: 查看: 物料导出 库管员可以将系统中登记的所有物料一次性导出来 Mat
💻 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 + -