// Last edited on 2013-01-04 19:19:25 by stolfilocal package utils; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.io.PrintStream; import java.util.ArrayList; public class file_functions { /**/ public static String[] get_stream_tokens (BufferedReader f, String separator) { return get_tokens (f, separator); } /**/ public static String[] get_linereader_tokens (LineNumberReader f, String separator) { return get_tokens (f, separator); } /**/ public static String[] get_tokens (BufferedReader f, String separator) { String line = ""; try { if ( (line = f.readLine()) != null) { String[] s = break_token(line, separator); if(!line.trim().isEmpty()) { return s; } else { return null; /*the line is empty*/ } } else { return null; /*the line is null*/ } } catch(Exception e){ e.printStackTrace(); } return null; } /**/ public static String[] break_token (String s, String separator) { String[] S = s.trim().split(separator); return S; } /**/ public static ArrayList get_list (String file_parameters) { BufferedReader arguments = Open_File_Stream (file_parameters); ArrayList list = new ArrayList(); String[] s = null; do { s = get_stream_tokens (arguments, " "); if (s == null) { break; } list.add(s[0]); } while (s != null); Close_File_Stream (arguments, file_parameters); return list; } /**/ public static ArrayList get_double_list (String file_parameters) { BufferedReader arguments = Open_File_Stream (file_parameters); ArrayList list = new ArrayList(); String[] s = null; s = get_stream_tokens (arguments, " "); for (int k = 0; k < s.length; k++) { list.add (Double.parseDouble(s[k])); } Close_File_Stream (arguments, file_parameters); return list; } /**/ public static String get_string (LineNumberReader file) { String[] s = get_linereader_tokens (file, "\n"); if (s != null) { return s[0]; } else { return null; } } /**/ public static LineNumberReader Open_File (String file_name) { LineNumberReader file = null; try{ file = new LineNumberReader(new FileReader(file_name)); return file; } catch(Exception e){ System.err.println ("Fail to open file: " + file_name); e.printStackTrace(); } return file; } /**/ public static BufferedReader Open_File_Stream (String file_name) { BufferedReader file = null; try{ InputStream stream = new FileInputStream (file_name); file = new BufferedReader(new InputStreamReader(stream)); return file; } catch(Exception e){ System.err.println ("Fail to open file: " + file_name); e.printStackTrace(); } return file; } public static PrintStream Open_Print_Stream (String file_name) { PrintStream stream = null; try{ FileOutputStream file = new FileOutputStream(file_name); stream = new PrintStream (file); } catch(Exception e){ System.err.println ("Fail to open file: " + file_name); e.printStackTrace(); } return stream; } /**/ public static void Close_File (LineNumberReader file, String file_name) { try{ file.close(); } catch(Exception e){ System.err.println ("Error: file \"" + file_name + "\" can not be closed. "); e.printStackTrace(); } } /**/ public static void Close_File_Stream (BufferedReader file, String file_name) { try{ file.close(); } catch(Exception e){ System.err.println ("Fail to close file: " + file_name); e.printStackTrace(); } } public static void Close_Print_Stream (PrintStream file, String file_name) { try{ file.close(); } catch(Exception e){ System.err.println ("Fail to close file: " + file_name); e.printStackTrace(); } } public static double[] process (double image[], int w, int h) { double[] range = new double[2]; double max = -Double.MAX_VALUE; double min = +Double.MAX_VALUE; for (int i = 0; i < (w * h); i++) { if (image[i] != -Double.MAX_VALUE) { if (image[i] < min) { min = image[i]; } else if (image[i] > max) { max = image[i]; } } } for (int i = 0; i < (w * h); i++) { if (image[i] == -Double.MAX_VALUE) { image[i] = min; } } range[0] = min; range[1] = max; return range; } public static void updateProgress (double progressPercentage) { final int width = 50; /*progress bar width in chars*/ System.err.print("\r["); int i = 0; for (; i <= (int)(progressPercentage*width); i++) { System.err.print("."); } for (; i < width; i++) { System.err.print(" "); } System.err.print("]"); } }