package info.istlab.IoTP; 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.nio.charset.Charset; 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, Charset.forName("utf-8"))); 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 getLinesAsString(String fn){ ArrayList<String> list = getLinesList(fn); StringBuffer sb = new StringBuffer(); for(String s: list){ sb.append(s+"\n"); } return sb.toString(); } public static String[] getLinesFromResource(String path){ ArrayList<String> list = getLinesListFromResource(path); return (String[]) list.toArray(new String[list.size()]); } 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 putLinesWithLineNum(String fn, ArrayList<String> data){ try { FileWriter filewriter = new FileWriter(fn, false); int lineNum = 0; for (String d : data) { filewriter.write(lineNum+""+d+"\r\n"); lineNum++; } 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){ 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(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return varyBuf.toByteArray(); } }