00001 package jpl.util;
00002
00003 import java.io.File;
00004 import java.io.FileInputStream;
00005 import java.io.FileNotFoundException;
00006 import java.io.FileOutputStream;
00007 import java.io.IOException;
00008 import java.util.NoSuchElementException;
00009 import java.util.Random;
00010 import java.util.StringTokenizer;
00011
00012 public class Util2
00013 {
00014 private static Random r = new Random();
00015
00016 public static String[] dir_to_members( String dir)
00017 {
00018 String[] ns = (new File(dir)).list();
00019 int len = ns.length;
00020 String[] ps = new String[len];
00021 for ( int i=0 ; i<len ; i++ )
00022 {
00023 try {
00024 ps[i] = (new File(dir,ns[i])).getCanonicalPath().toString();
00025 }
00026 catch ( IOException e )
00027 {
00028 ps[i] = "";
00029 }
00030 }
00031 return ps;
00032 }
00033
00034 public static int spawn_in_out_err( String command, String infile, String outfile, String errfile)
00035 {
00036 Process p;
00037
00038 try {
00039 p = Runtime.getRuntime().exec(command);
00040 }
00041 catch ( IOException e)
00042 {
00043 return -1;
00044 }
00045
00046 try {
00047 if ( infile != null )
00048 {
00049 ( new Xfer( new FileInputStream(infile),
00050 p.getOutputStream()
00051 )).start();
00052 }
00053 if ( outfile != null )
00054 {
00055 ( new Xfer( p.getInputStream(),
00056 new FileOutputStream(outfile)
00057 )).start();
00058 }
00059 if ( errfile != null )
00060 {
00061 ( new Xfer( p.getErrorStream(),
00062 new FileOutputStream(errfile)
00063 )).start();
00064 }
00065 return p.waitFor();
00066 }
00067 catch ( FileNotFoundException e )
00068 {
00069 return -2;
00070 }
00071 catch ( InterruptedException e )
00072 {
00073 return -4;
00074 }
00075 }
00076
00077 public static int spawn( String command)
00078 {
00079
00080 try {
00081 return java.lang.Runtime.getRuntime().exec(command).waitFor();
00082 }
00083 catch ( IOException e )
00084 {
00085 return -77;
00086 }
00087 catch ( InterruptedException e )
00088 {
00089 return -78;
00090 }
00091 }
00092
00093 public static String new_scratch_file( String dir)
00094 {
00095 int n = (int)(r.nextFloat()*900000+100000);
00096 File f = new File( dir, "newscratchfile."+n);
00097
00098 if ( f.exists() )
00099 {
00100 return new_scratch_file( dir);
00101 }
00102 else
00103 {
00104 try {
00105 (new FileOutputStream(f)).close();
00106 if ( f.exists() )
00107 {
00108 return f.getCanonicalPath().toString();
00109 }
00110 else
00111 {
00112 return null;
00113 }
00114 }
00115 catch ( IOException e )
00116 {
00117 return null;
00118 }
00119 }
00120 }
00121
00122 public static boolean create_dir( String dir)
00123 {
00124 try {
00125 return (new File(dir)).mkdir();
00126 }
00127 catch ( SecurityException e )
00128 {
00129 return false;
00130 }
00131 }
00132
00133 public static boolean file_exists( String f)
00134 {
00135 return (new File(f)).exists();
00136 }
00137
00138 public static boolean file_can_read( String f)
00139 {
00140 return (new File(f)).canRead();
00141 }
00142
00143 public static boolean file_can_write( String f)
00144 {
00145 return (new File(f)).canWrite();
00146 }
00147
00148 public static boolean file_is_file( String f)
00149 {
00150 return (new File(f)).isFile();
00151 }
00152
00153 public static boolean file_is_dir( String f)
00154 {
00155 return (new File(f)).isDirectory();
00156 }
00157
00158 public static long file_last_modified( String f)
00159 {
00160 return (new File(f)).lastModified();
00161 }
00162
00163 public static boolean delete_file( String f)
00164 {
00165 try {
00166 return (new File(f)).delete();
00167 }
00168 catch ( SecurityException e )
00169 {
00170 return false;
00171 }
00172 }
00173
00174 public static String[] classpath_parts()
00175 {
00176 String cp = java.lang.System.getProperty("java.class.path");
00177 StringTokenizer p = new StringTokenizer( cp, File.pathSeparator);
00178 String a[] = new String[p.countTokens()];
00179 int i = 0;
00180 String s;
00181
00182 try {
00183 while ( p.hasMoreTokens() )
00184 {
00185 s = (new File(p.nextToken())).getCanonicalPath().toString();
00186 if ( ! strings_contains_string( a, i, s) )
00187 {
00188 a[i++] = s;
00189 }
00190 }
00191 }
00192 catch ( NoSuchElementException e )
00193 {
00194 return null;
00195 }
00196 catch ( IOException e )
00197 {
00198 return null;
00199 }
00200 String r[] = new String[i];
00201 java.lang.System.arraycopy( a, 0, r, 0, i);
00202 return r;
00203 }
00204
00205 private static boolean strings_contains_string( String[] ss, int n, String s)
00206 {
00207 int i;
00208
00209 for ( i=0 ; i<n ; i++ )
00210 {
00211 if ( ss[i].equals(s) )
00212 return true;
00213 }
00214 return false;
00215 }
00216
00217 public static byte[] filename_to_byte_array( String f)
00218 {
00219 try {
00220 FileInputStream s = new FileInputStream( f);
00221 int length = s.available();
00222 byte[] buf = new byte[length];
00223 s.read( buf);
00224 s.close();
00225 return buf;
00226 }
00227 catch ( FileNotFoundException e )
00228 {
00229 return null;
00230 }
00231 catch ( IOException e )
00232 {
00233 return null;
00234 }
00235 }
00236 }
00237