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

org.fnlp.util.MyFiles Maven / Gradle / Ivy

/**
*  This file is part of FNLP (formerly FudanNLP).
*  
*  FNLP is free software: you can redistribute it and/or modify
*  it under the terms of the GNU Lesser General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*  
*  FNLP is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU Lesser General Public License for more details.
*  
*  You should have received a copy of the GNU General Public License
*  along with FudanNLP.  If not, see .
*  
*  Copyright 2009-2014 www.fnlp.org. All rights reserved. 
*/

package org.fnlp.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.CharBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import org.fnlp.nlp.pipe.seq.String2Sequence;
/**
 * 自定义文件操作类
 * @author xpqiu
 * @version 1.0
 * @since FudanNLP 1.5
 */
public class MyFiles {

	private static void allPath(List files, File handle, String suffix) {
		if (handle.isFile()){
			if(suffix==null||handle.getName().endsWith(suffix))
				files.add(handle);
		}
		else if (handle.isDirectory()) {
			for (File sub : Arrays.asList(handle.listFiles()))
				allPath(files, sub,suffix);
		}
	}

	public static List getAllFiles(String path, String suffix) {
		ArrayList files = new ArrayList();
		allPath(files, new File(path), suffix);
		return files;
	}
	/**
	 * 将字符串写到文件
	 * @param path
	 * @param str
	 * @throws IOException
	 */
	public static void write(String path, String str) throws IOException {
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
				path), "utf8"));
		out.append(str);
		out.close();		
	}
	public static void write(String path, Serializable o) {
		try {
			ObjectOutputStream outstream = new ObjectOutputStream(
					new GZIPOutputStream(new FileOutputStream(path)));
			outstream.writeObject(o);
			outstream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	
	/**
	 * 转换文件编码
	 * @param infile
	 * @param outfile
	 * @param enc1
	 * @param enc2
	 * @throws IOException
	 */
	public static void conver(String infile, String outfile, String enc1, String enc2) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(
				new FileInputStream(infile), enc1));
		BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
				outfile), enc2));

		String line = null;
		while ((line = in.readLine()) != null) {
			line = line.trim();	
			if(line.length()==0)
				continue;
			out.write(line);
			out.newLine();
		}
		in.close();
		out.close();
		
	}
	
	public static Object read(String path) {
		Object o=null;
		try {
			ObjectInputStream instream = new ObjectInputStream(new GZIPInputStream(
					new FileInputStream(path)));
			o = instream.readObject();
			instream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return o;
	}

	public static Object loadObject(String path) throws IOException,
    ClassNotFoundException {
        ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(
                new GZIPInputStream(new FileInputStream(path))));
        Object obj = in.readObject();
        in.close();
        return obj;
    }

	public static void saveObject(String path, Object obj) throws IOException {
		ObjectOutputStream out = new ObjectOutputStream(
				new BufferedOutputStream(new GZIPOutputStream(
						new FileOutputStream(path))));
		out.writeObject(obj);
		out.close();
	}
	/**
	 * 从文件中读入完整的字符串,包括\r\n等。
	 * @param file
	 * @return
	 * @throws IOException 
	 */
	public static String loadString(String file) throws IOException {
		StringBuilder sb = new StringBuilder();
		UnicodeReader reader = new UnicodeReader(new FileInputStream(file), "utf8");
		int n;	
		char[] cs = new char[256];
		while ((n = reader.read(cs)) != -1) {		
			sb.append(Arrays.copyOfRange(cs, 0, n));			
		}
		return sb.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy