// IOUtil.java import java.io.*; import java.net.*; public class IOUtil { public static String urlFileName( String url ) { int idx = url.lastIndexOf( "/" ); if ( idx < 0 ) return url; return url.substring( idx + 1 ); } public static long pipe( InputStream in , OutputStream out ) throws IOException { long bytes = 0; byte[] buf = new byte[2048]; while ( true ) { int x = in.read( buf ); if ( x < 0 ) break; bytes += x; out.write( buf , 0 , x ); } return bytes; } public static class PipingThread extends Thread { public PipingThread( InputStream in , OutputStream out ) { _in = in; _out = out; _wrote = 0; } public void run() { try { _wrote = pipe( _in , _out ); } catch ( IOException ioe ) { ioe.printStackTrace(); _wrote = -1; } } public long wrote() { return _wrote; } long _wrote; final InputStream _in; final OutputStream _out; } public static String readStringFully( InputStream in ) throws IOException { ByteArrayOutputStream bout = new ByteArrayOutputStream(); pipe( in , bout ); return new String( bout.toByteArray() , "UTF8" ); } public static String[] runCommand( String cmd , File dir ) throws IOException { Process p = Runtime.getRuntime().exec( cmd.split( " +" ) , new String[]{} , dir ); String[] results = new String[]{ IOUtil.readStringFully( p.getInputStream() ) , IOUtil.readStringFully( p.getErrorStream() ) }; try { if ( p.waitFor() != 0 ) throw new RuntimeException( "command failed [" + cmd + "]\n" + results[0] + "\n" + results[1] ); } catch ( InterruptedException ie ) { throw new RuntimeException( "uh oh" ); } return results; } public static void download( String http , File localDir ) throws IOException { File f = localDir; f.mkdirs(); f = new File( f.toString() + File.separator + urlFileName( http ) ); System.out.println( "downloading\n\t" + http + "\n\t" + f ); if ( f.exists() ) { System.out.println( "\t already exists" ); return; } URL url = new URL( http ); InputStream in = url.openConnection().getInputStream(); OutputStream out = new FileOutputStream( f ); pipe( in , out ); out.close(); in.close(); } public static void main( String[] args ) throws Exception { byte[] data = new byte[]{ 'e' , 'r' , 'h' , 0 }; System.out.write( data ); System.out.println( "yo" ); } }