参考了开源软件code。在自己机器上测试通过。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
public class CopyHtm {
public static void main(String[] args) throws Exception {
String sourceUrlString = "sample/some.html";
String currentDir=System.getProperty("user.dir").replace('\\', '/');
download("file:///" +currentDir+"/"+sourceUrlString, "tmp");
}
final static int TRANSFER_SIZE = 4096;
public static void download(String link, String dest) {
File file;
URL source;
byte[] data;
InputStream in;
FileOutputStream out;
int read;
String fname = dest+"/"+genFileName(link);
File ddest = new File(dest);
if (!ddest.exists()) {
ddest.mkdirs();
}
file = new File(fname);
if(file.exists()){
return;
}
try {
source = new URL(link);
data = new byte[TRANSFER_SIZE];
try {
in = source.openStream();
try {
out = new FileOutputStream(file);
try {
while (-1 != (read = in.read(data, 0, data.length))) {
out.write(data, 0, read);
}
}catch(Exception e){
System.err.println("broken link=" + link);
}finally {
out.close();
}
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} finally {
in.close();
}
} catch (FileNotFoundException fnfe) {
System.err.println("broken link " + fnfe.getMessage() + " ignored");
}
} catch (MalformedURLException murle) {
murle.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public static String genFileNameExt(String url, String ext) {
return genFileNameNoExt(url) + "." + ext;
}
public static String genFileNameNoExt(String url) {
int ilast = url.lastIndexOf("/");
String fname = url.substring(ilast);
int didx = fname.lastIndexOf('.');
if (didx > 0) {
fname = fname.substring(0, didx);//+"."+ext;
}
return fname;
}
public static String genFileName(String url) {
return genFileNameExt(url, "html");
}
}
九霄云外