Преобразовать этот метод FileOutputStream Groovy в чистую Java? - PullRequest
1 голос
/ 21 июня 2011

Я пытался придумать, как преобразовать этот метод Groovy в чистый метод Java.Кто-нибудь хочет нанести удар?

public void wget(String urlstring, File destfile) {
    new FileOutputStream(destfile).withStream{ out ->
        new URL(urlstring).openStream().eachByte{
            out.write(it)
        }
    }
}

----------------------------

Ответ, благодаря tim_yates, оказался:

public void wget(String urlstring, File destfile) throws IOException {
    InputStream bis = new URL( urlstring ).openStream() ;
    BufferedOutputStream fos = 
            new BufferedOutputStream( new FileOutputStream( destfile ) ) ;
    try {
        byte[] buffer = new byte[ 2048 ] ;
        @SuppressWarnings("unused")
        int cnt=0;
        while( ( cnt = bis.read( buffer, 0, 2048 ) ) > -1 ) {
            fos.write( buffer, 0, 2048 ) ;
        }
    }
    finally {
        bis.close() ;
        fos.close() ;
    }
}

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Как насчет

public void wget( String urlstring, File destFile ) throws IOException {
  BufferedInputStream bis = new URL( urlstring ).openStream() ;
  BufferedOutputStream fos = new BufferedOutputStream( new FileOutputStream( destFile ) ) ;
  try {
    byte[] buffer = new byte[ 8192 ] ;
    int cnt = 0 ;
    while( ( cnt = bis.read( buffer, 0, 8192 ) ) > -1 ) {
      fos.write( buffer, 0, 8192 ) ;
    }
  }
  finally {
    bis.close() ;
    fos.close() ;
  }
}

Я считаю , что должно работать ... Но я не пробовал: - /

0 голосов
/ 21 июня 2011
import java.io.*;
import java.net.*;
public class Jwget{
    public void wget(String urlstring,File destfile) throws Exception {
        URL url=new URL(urlstring);
        InputStream is=url.openStream();
        OutputStream os=new FileOutputStream(destfile);
        for(int i=is.read();i!=-1;i=is.read())
            os.write(i);
        is.close();
        os.close();
    }
    public static void main(String[] args) throws Exception {
        new Jwget().wget("http://tayek.com",new File("java.txt"));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...