Newer
Older
piccolo2d.java / anchorgarden / src / main / java / jaist / css / covis / util / FileReadWriter.java
@Motoki Miura Motoki Miura on 14 Apr 2022 2 KB edu.umd.cs.piccolo -> org.piccolo2d
package jaist.css.covis.util;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/**
 *  ファイル読み書きクラス
 *
 * @author miuramo
 *
 */
public class FileReadWriter {

	/** ファイルを読み込み,各行を配列に入れて返す
	 * @param fn ファイル名
	 * @return 文字列の配列(各行が要素)
	 */
	public static String[] getLines(String fn) {
		if (fn == null) return new String[]{""};
		ArrayList<String> list = new ArrayList<String>();
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(
					new FileInputStream(fn)));
			String line = null;
			/* ファイル読み込み */
			while ((line = br.readLine()) != null) {
				list.add(line);
			}
			/* ファイルを閉じます */
			br.close();
		} catch (IOException err) {
			System.out.println("ReadError:" + fn);
		}
		return (String[]) list.toArray(new String[list.size()]);
	}

	/** 配列をファイルに書き込む 
	 * 
	 * @param fn ファイル名
	 * @param data 文字列の配列(各行が要素)
	 */
	public static void putLines(String fn, String data[]) {
		try {
			FileWriter filewriter = new FileWriter(fn, false);
			for (int i = 0; i < data.length; i++) {
				/* 改行文字追加 */
				data[i] = data[i] + "\n";
				/* 文字列を書き込みます */
				filewriter.write(data[i]);
			}
			/* ファイルを閉じます */
			filewriter.close();
		} catch (IOException e) {
			System.out.println("WriteError:" + fn);
		}
	}

	/** ArrayListをファイルに書き込む 
	 * 
	 * @param fn ファイル名
	 * @param list 文字列のArrayList(各要素が行となる)
	 */
	public static void putLines(String fn, ArrayList<String> list) {
		try {
			FileWriter filewriter = new FileWriter(fn, false);
			for (String s : list) {
				/* 文字列を書き込みます */
				filewriter.write(s + "\n");
			}
			/* ファイルを閉じます */
			filewriter.close();
		} catch (IOException e) {
			System.out.println("WriteError:" + fn);
		}
	}

	/**
	 *  文字列を分割して配列で返します

	 * @param delim 区切り文字
	 * @param text 分割したいテキスト
	 * @return 分割した文字列の配列
	 */
	public static String[] split(String delim, String text) {
		int index = -1;
		ArrayList<String> list = new ArrayList<String>();
		while ((index = text.indexOf(delim)) != -1) {
			list.add(text.substring(0, index));
			text = text.substring(index + delim.length());
		}
		list.add(text);
		String[] ret = (String[]) list.toArray(new String[list.size()]);
		return ret;
	}
}