1 package nmp.io; 2 3 import java.io.*; 4 5 /*** 6 * @version 0.045 12-Dec-2000 7 * @author Nuno Pregui�a 8 */ 9 public class Utilities 10 { 11 public final static int BUFFER_SIZE = 1024; 12 public final static byte[] globbuf = new byte[BUFFER_SIZE]; 13 /*** 14 * Produces filename 15 *@param path Pathname 16 *@param filename Filename 17 */ 18 public static String produceFullPath( String path, String filename) 19 { 20 char ch = java.io.File.separatorChar; 21 if( path.charAt( path.length() - 1) == ch) 22 { 23 if( filename.length() == 0 || filename.charAt( 0) != ch) 24 return path + filename; 25 else 26 return path.substring( 0, path.length() - 2) + filename; 27 } 28 else 29 { 30 if( filename.length() == 0 || filename.charAt( 0) != ch) 31 return path + String.valueOf( ch) + filename; 32 else 33 return path + filename; 34 } 35 } 36 37 /*** 38 * Returns the serialized form of the given object 39 */ 40 public static byte []serialize( Object obj) throws IOException { 41 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 42 ObjectOutputStream oos = new ObjectOutputStream( bos); 43 oos.writeObject( obj); 44 oos.flush(); 45 oos.close(); 46 bos.flush(); 47 bos.close(); 48 return bos.toByteArray(); 49 } 50 /*** 51 * Returns the given object 52 */ 53 public static Object unserialize( byte []arr) throws IOException { 54 try { 55 ByteArrayInputStream bis = new ByteArrayInputStream( arr); 56 ObjectInputStream ois = new ObjectInputStream( bis); 57 Object obj = ois.readObject(); 58 ois.close(); 59 bis.close(); 60 return obj; 61 } catch( ClassNotFoundException e) { 62 throw new IOException( "Class not found exception in unserialize"); 63 } 64 } 65 66 /*** 67 * Cleanups outpurstream and associated file - used to delete partially downloaded 68 * resources 69 */ 70 public static void cleanupCon( File f, OutputStream out) { 71 if( out != null) 72 try { 73 out.close(); 74 } catch( Exception e0) { 75 // do nothing 76 } 77 if( f != null) 78 f.delete(); 79 } 80 81 /*** 82 * Dumps in to out 83 */ 84 public static void copy( InputStream in, OutputStream out) throws IOException { 85 byte []buffer = new byte[BUFFER_SIZE]; 86 87 while( true) { 88 int len = in.read( buffer, 0, BUFFER_SIZE); 89 if( len <= 0) 90 break; 91 out.write( buffer, 0, len); 92 } 93 } 94 95 /*** 96 * Load the contents of the file f into buf (appending) 97 * 98 * @return Returns true if the file has been successfully read 99 */ 100 public static boolean loadText( File f, StringBuffer buf) throws IOException { 101 if( buf == null) 102 return false; 103 104 BufferedReader reader = new BufferedReader( new FileReader( f)); 105 char []buffer = new char[BUFFER_SIZE]; 106 107 while( true) { 108 int len = reader.read( buffer, 0, BUFFER_SIZE); 109 if( len <= 0) 110 break; 111 buf.append( buffer, 0, len); 112 } 113 reader.close(); 114 return true; 115 } 116 117 /*** 118 * Save the contents of buf in file f 119 * 120 * @return Returns true if the file has been successfully saved 121 */ 122 public static boolean saveText( File f, String buf) throws IOException { 123 if( buf == null) 124 return false; 125 if( f == null) 126 return false; 127 128 BufferedWriter writer = new BufferedWriter( new FileWriter( f)); 129 char []buffer = new char[BUFFER_SIZE]; 130 131 int len = buf.length(); 132 int curpos = 0; 133 134 while( curpos < len) { 135 int nextpos = curpos + BUFFER_SIZE; 136 if( nextpos > len) 137 nextpos = len; 138 buf.getChars( curpos, nextpos, buffer, 0); 139 writer.write( buffer, 0, nextpos - curpos); 140 curpos = nextpos; 141 } 142 writer.flush(); 143 writer.close(); 144 return true; 145 } 146 147 /*** 148 * Opens object output stream for appending 149 */ 150 public static ObjectOutputStream openAppend( File f) throws IOException, ClassNotFoundException { 151 if( ! f.exists()) 152 return new ObjectOutputStream( new FileOutputStream( f)); 153 File faux; 154 for( int i = 0; ; ) { 155 faux = new File( f.getAbsolutePath() + "." + i); 156 if( ! faux.exists()) 157 break; 158 } 159 if( ! f.renameTo( faux)) 160 throw new IOException( "Unable to rename"); 161 ObjectInputStream ois = new ObjectInputStream( new BufferedInputStream( new FileInputStream( faux))); 162 ObjectOutputStream oos = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream( f))); 163 for( ; ; ) { 164 Object obj = ois.readObject(); 165 if( obj == null) 166 break; 167 oos.writeObject( obj); 168 } 169 ois.close(); 170 return oos; 171 } 172 173 /*** 174 * Merges all file with name " prefix | int | suffix " into file filename 175 * 176 * @param delete If true original files are deleted 177 */ 178 public static void merge( int start, String filename, String prefix, String sufix, boolean delete) throws IOException { 179 File f = new File( filename); 180 BufferedOutputStream bos = null; 181 if( f.exists()) 182 bos = new BufferedOutputStream( new FileOutputStream( filename, true)); 183 else 184 bos = new BufferedOutputStream( new FileOutputStream( filename)); 185 for( int i = start; ; i++) { 186 File f2 = new File( prefix + i + sufix); 187 if( ! f2.exists()) 188 break; 189 BufferedInputStream bis = new BufferedInputStream( new FileInputStream( f2)); 190 copy( bis, bos); 191 bis.close(); 192 if( delete) 193 f2.delete(); 194 } 195 bos.flush(); 196 bos.close(); 197 } 198 199 /*** 200 * Copies files from src to dst 201 */ 202 public static void copyFile( String src, String dst) throws IOException{ 203 copyFile( new File(src), new File(dst)); 204 } 205 public static void copyFile( File src, File dst) throws IOException{ 206 InputStream is = new FileInputStream( src); 207 OutputStream os = new FileOutputStream( dst); 208 for( ; ; ) { 209 int count = is.read( globbuf); 210 if( count <= 0) 211 break; 212 os.write( globbuf, 0, count); 213 } 214 os.flush(); 215 os.close(); 216 is.close(); 217 } 218 /*** 219 * clean dir 220 */ 221 public static void cleanDir( String dir) { 222 File f = new File( dir); 223 if( ! f.isDirectory()) 224 return; 225 File[] fs = f.listFiles(); 226 if( fs != null) { 227 for( int i = 0; i < fs.length; i++) { 228 fs[i].delete(); 229 } 230 } 231 } 232 }

This page was automatically generated by Maven