Java动态生成静态页
代码中有详细的注释, 这里就不再详述(有在项目中使用). 1. 可自定义生成文件名和路径. 2. 可自动生成文件夹,方便管理(一般是按日期) import java.io.*; import java.net.*; /** * * @author yidwo Lai * @version 1.0 * */ public class MyMakeHtml{ /** * * @param sourceURL 动态页面运行路径 * * @param saveFilePath 生成的静态页面保存路径(带文件名) * * @param dirPath 生成的静态页面保存路径(不带文件名,供动态生成文件夹,以便管理) * * @return boolean */ public static boolean MyMakeHtml(String sourceURL, String saveFilePath,String dirPath) { boolean flag = false; RandomAccessFile saveFile = null; //BufferedRandomAccessFile saveFile; InputStream inStream = null; try { // 如果静态页面已经存在,则删除 File myFile=new File(saveFilePath); if(myFile.exists()){ myFile.delete(); } myFile=null; // 如果给出路径的文件夹不存在,则新建. if(dirPath.trim().length()>0){ File dirFile = new File(dirPath); if(!dirFile.exists()){ dirFile.mkdirs(); } dirFile=null; } /** * 先调用 RandomAccessFile的 RandomAccessFile(String name, String mode) * 构造方法,如果给定的name!=null, 则转而调用 * RandomAccessFile(File file, String mode)的构造方法 * */ saveFile = new RandomAccessFile(saveFilePath, "rw"); // 后台运行动态页面 URL url = new java.net.URL(sourceURL); // 打开对动态页面的访问连接 URLConnection conn = url.openConnection(); // 获得动态页面的源码 inStream = conn.getInputStream(); // 取得源码的大小 int len = 512;//conn.getContentLength(); byte[] buffer = new byte[len]; int lineRead = 0; // 写入静态页面 while ( (lineRead = inStream.read(buffer, 0, len)) != -1) { //EOF saveFile.write(buffer, 0, lineRead); } flag = true; System.out.println("sourceURL = " + sourceURL+" contentLength= "+len); }catch (Exception e) { e.printStackTrace(); flag = false; }finally { try { if (saveFile != null) { saveFile.close(); } }catch (Exception e) { } try { if (inStream != null) { inStream.close(); } }catch (Exception e) { } } return flag; }