package cit.PureATN; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; public class FileReadWriter { public static ArrayList<String> getLinesListFromResource(String path){ ClassLoader cl = FileReadWriter.class.getClassLoader(); if (cl == null) { System.err.println("Resource not found: " + path); return null; } else { InputStream ris = cl.getResourceAsStream(path); return getLinesListFromInputStream(ris, path); } } public static ArrayList<String> getLinesListFromInputStream(InputStream is, String name){ ArrayList<String> list = new ArrayList<String>(); try { BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line = null; /* ファイル読み込み */ while ((line = br.readLine()) != null) { list.add(line); } /* ファイルを閉じます */ br.close(); } catch (IOException err) { System.out.println("ReadError: "+name); } return list; } public static ArrayList<String> getLinesList(String fn, boolean createIfNotExist){ File f = new File(fn); if (createIfNotExist){ if (!f.exists()){ try { if (f.createNewFile()){ System.out.println("New file "+fn+" Created."); } } catch (IOException e) { e.printStackTrace(); } } } return getLinesList(fn); } public static ArrayList<String> getLinesList(String fn){ try { return getLinesListFromInputStream(new FileInputStream(fn), fn); } catch (FileNotFoundException e) { e.printStackTrace(); } return null; } /* ファイルを読み込む */ public static String[] getLines(String fn) { ArrayList<String> list = getLinesList(fn); return (String[]) list.toArray(new String[list.size()]); } public static String[] getLinesFromResource(String path){ ArrayList<String> list = getLinesListFromResource(path); 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++) { /* 改行文字追加して */ /* 文字列を書き込みます */ filewriter.write(data[i]+System.getProperty("line.separator")); } /* ファイルを閉じます */ filewriter.close(); } catch (IOException e) { System.out.println("WriteError:" + fn); } } /* ファイルに書き込む */ public static void putLines(String fn, ArrayList<String> data) { // System.out.println(fn); try { FileWriter filewriter = new FileWriter(fn, false); for (String d : data) { /* 改行文字追加 */ d = d + "\r\n"; /* 文字列を書き込みます */ filewriter.write(d); } /* ファイルを閉じます */ filewriter.close(); } catch (IOException e) { System.out.println("WriteError:" + fn); } } /* ファイルに書き込む */ public static void putStringToFile(String fn, String out) { // System.out.println(fn); try { FileWriter filewriter = new FileWriter(fn, false); filewriter.write(out); /* ファイルを閉じます */ filewriter.close(); } catch (IOException e) { System.out.println("WriteError:" + fn); } } /* 文字列を分割して配列で返します */ 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; } public static void writeBytesToFile(String filepath, byte[] ba){ OutputStream fos = null; DataOutputStream dos = null; try{ fos = new FileOutputStream(filepath); dos = new DataOutputStream(fos); dos.write(ba); dos.close(); fos.close(); }catch(IOException iex){ iex.printStackTrace(System.out); } } public static byte[] readBytesFromFile(String path){ File f = new File(path); if (!f.exists()) System.out.println("No file "+path); BufferedInputStream in; ByteArrayOutputStream varyBuf = new ByteArrayOutputStream(); final int LS = 1024; int b; try { in = new BufferedInputStream(new FileInputStream(path)); byte buf[] = new byte[LS]; while((b = in.read(buf, 0, buf.length)) != -1 ) { varyBuf.write(buf,0,b) ; } varyBuf.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return varyBuf.toByteArray(); } public static ArrayList<String> buffer; public static void bufclear() { if (buffer == null) buffer = new ArrayList<String>(); else buffer.clear(); } public static void bufSave(String fn){ FileReadWriter.putLines(fn, buffer); } }