All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.star.beans.XMLReaderWriter Maven / Gradle / Ivy

There is a newer version: 0.0.3
Show newest version
package com.star.beans;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;

import com.star.exception.pojo.ToolException;
import com.star.io.IoUtil;
import com.star.string.StringUtil;

/**
 * 对象xml的持久化
 * 
 * 感觉这类没什么大用处,偷懒可以用用
 * 
 * @author starhq
 *
 */
public final class XMLReaderWriter {

	private XMLReaderWriter() {
		super();
	}

	/**
	 * 单个对象转储xml,写进文本
	 * 
	 * @param path
	 *            文件路径
	 * @param instance
	 *            对象
	 * @param append
	 *            是否添加
	 */
	public static  void writeSingle(final String path, final T instance, final boolean append) {
		FileOutputStream fileOutputStream;
		try {
			fileOutputStream = new FileOutputStream(path);
		} catch (FileNotFoundException e) {
			throw new ToolException(StringUtil.format("object convert to xml,write into file failure,the reason is: {}",
					e.getMessage()), e);
		}
		final XMLEncoder encoder = new XMLEncoder(fileOutputStream, "UTF-8", true, 0);
		encoder.writeObject(instance);
		IoUtil.close(encoder);
	}

	/**
	 * 从文本中读取对象
	 * 
	 * @param path
	 *            文件路径
	 * @return 读取的对象
	 */
	public static  T readSingle(final String path) {
		FileInputStream fileInput;
		try {
			fileInput = new FileInputStream(path);
		} catch (FileNotFoundException e) {
			throw new ToolException(StringUtil
					.format("read xml from path and convert to object failure,the reason is: {}", e.getMessage()), e);
		}
		final XMLDecoder decoder = new XMLDecoder(fileInput);
		@SuppressWarnings("unchecked")
		final T instance = (T) decoder.readObject();
		IoUtil.close(decoder);
		return instance;
	}

	/**
	 * 多个对象转储xml,写进文本
	 * 
	 * @param path
	 *            路径
	 * @param instances
	 *            对象集合
	 * @param append
	 *            是否添加
	 */
	public static  void writeMulit(final String path, final List instances, final boolean append) {
		FileOutputStream fileOutput;
		try {
			fileOutput = new FileOutputStream(path, append);
		} catch (FileNotFoundException e) {
			throw new ToolException(StringUtil.format(
					"collection convert to xml then write into xml failure,the reason is: {}", e.getMessage()), e);
		}
		final XMLEncoder encoder = new XMLEncoder(fileOutput, "UTF-8", true, 0);
		encoder.writeObject(instances);
		IoUtil.close(encoder);
	}

	/**
	 * 从文本中读取对象
	 * 
	 * @param path
	 *            路径
	 * @return 对象集合
	 */
	public static  List readMulti(final String path) {
		FileInputStream fileInput;
		try {
			fileInput = new FileInputStream(path);
		} catch (FileNotFoundException e) {
			throw new ToolException(StringUtil.format(
					"read xml from file and conver to collectoin failure,the reason is: {}", e.getMessage()), e);
		}
		final XMLDecoder decoder = new XMLDecoder(fileInput);
		@SuppressWarnings("unchecked")
		final List instances = (List) decoder.readObject();
		IoUtil.close(decoder);
		return instances;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy