应该不会吧,呵呵
我用过JSPsmart的上传下载文件的类,
还可以,但是有部分达不到我的要求。
希望大家多讨论一下。

解决方案 »

  1.   

    Java中对文件的操作   java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。   1。新建目录<%@ page contentType="text/html;charset=gb2312"%>
    <%
    String filePath="c:/aaa/";
    filePath=filePath.toString();//中文转换
    java.io.File myFilePath=new java.io.File(filePath);
    if(!myFilePath.exists())
    myFilePath.mkdir();
    %>  2。新建文件<%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*" %>
    <%
    String filePath="c:/哈哈.txt";
    filePath=filePath.toString();
    File myFilePath=new File(filePath);
    if(!myFilePath.exists())
    myFilePath.createNewFile();
    FileWriter resultFile=new FileWriter(myFilePath);
    PrintWriter myFile=new PrintWriter(resultFile);
    String strContent = "中文测试".toString();
    myFile.println(strContent);
    resultFile.close();
    %> 3。删除文件<%@ page contentType="text/html;charset=gb2312"%>
    <%
    String filePath="c:/支出证明单.xls";
    filePath=filePath.toString();
    java.io.File myDelFile=new java.io.File(filePath);
    myDelFile.delete();
    %> 4。文件拷贝<%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%
    int bytesum=0;
    int byteread=0; 
    file://读到流中
    InputStream inStream=new FileInputStream("c:/aaa.doc");
    FileOutputStream fs=new FileOutputStream( "d:/aaa.doc");byte[]  buffer =new  byte[1444];
    int length;
    while ((byteread=inStream.read(buffer))!=-1)
     {
       out.println("<DT><B>"+byteread+"</B></DT>");
       bytesum+=byteread;
       System.out.println(bytesum);
       fs.write(buffer,0,byteread);
     } 
    inStream.close(); 
    %> 5。整个文件夹拷贝<%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.io.*" %>
    <%String url1="C:/aaa";
      String url2="d:/java/";
      (new File(url2)).mkdirs();
     File[] file=(new File(url1)).listFiles();
     for(int i=0;i<file.length;i++){
      if(file[i].isFile()){
       file[i].toString();
       FileInputStream input=new FileInputStream(file[i]);
       FileOutputStream output=new FileOutputStream(url2+"/"+(file[i].getName()).toString());
       byte[] b=new byte[1024*5];
        int len;
        while((len=input.read(b))!=-1){
        output.write(b,0,len);
        }
        output.flush();
        output.close();
        input.close();
      }
     }
    %>  6。文件下载<%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%
      String fileName = "zsc104.swf".toString();
    //读到流中
    InputStream inStream=new FileInputStream("c:/zsc104.swf");
    //设置输出的格式 
      response.reset(); 
      response.setContentType("bin");
      response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
    //循环取出流中的数据 
      byte[] b = new byte[100]; 
      int len; 
      while((len=inStream.read(b)) >0) 
      response.getOutputStream().write(b,0,len);  
      inStream.close(); 
    %> 7。数据库字段中的文件下载<%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.lang.*" %>
    <%@ page import="java.io.*" %>
    <%@ page import="com.jspsmart.upload.*" %>
    <%@ page import="DBstep.iDBManager2000.*"%>
    <%
    int bytesum=0;
    int byteread=0;
    //打开数据库
    ResultSet result=null;
    String Sql=null;
    PreparedStatement prestmt=null; 
    DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
    DbaObj.OpenConnection();
    //取得数据库中的数据
    Sql="select  *  from  t_local_zhongzhuan ";
    result=DbaObj.ExecuteQuery(Sql);
    result.next();file://将数据库中的数据读到流中 
    InputStream inStream=result.getBinaryStream("content"); 
    FileOutputStream fs=new FileOutputStream( "c:/dffdsafd.doc");byte[]  buffer =new  byte[1444];
    int length;
    while ((byteread=inStream.read(buffer))!=-1)
      {
         out.println("<DT><B>"+byteread+"</B></DT>");
         bytesum+=byteread;
         System.out.println(bytesum);
         fs.write(buffer,0,byteread);
         }
    %> 8。把网页保存成文件<%@ page import="java.text.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.net.*"%>
    <%
     URL stdURL = null;
     BufferedReader stdIn = null;
     PrintWriter stdOut = null;
     try {
      stdURL = new URL("http://www.163.com");
     }
     catch (MalformedURLException e) {
       throw e;
     }try {
       stdIn = new BufferedReader(new InputStreamReader(stdURL.openStream()));
       stdOut = new PrintWriter(new BufferedWriter(new FileWriter("c:/163.html")));
     }
     catch (IOException e) {
     } /***把URL指定的页面以流的形式读出,写成指定的文件***/
     try {
       String strHtml = "";
       while((strHtml = stdIn.readLine())!=null) {
       stdOut.println(strHtml);
       }
     }
     catch (IOException e) {
       throw e;
     }
     finally {
       try {
         if(stdIn != null)
           stdIn.close();
         if(stdOut != null)
           stdOut.close();
       }
       catch (Exception e) {
         System.out.println(e);
       }
     }
    %> 9。直接下载网上的文件<%@ page import="java.io.*"%>
    <%@ page import="java.net.*"%>
    <%
    int bytesum=0;
    int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif");
     URLConnection conn = url.openConnection();
     InputStream inStream = conn.getInputStream();
     FileOutputStream fs=new FileOutputStream( "c:/abc.gif");  byte[]  buffer =new  byte[1444];
       int length;
        while ((byteread=inStream.read(buffer))!=-1)
        {
           out.println("<DT><B>"+byteread+"</B></DT>");
           bytesum+=byteread;
           System.out.println(bytesum);
           fs.write(buffer,0,byteread);
         }*>
      

  2.   

    6。文件下载<%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%
      String fileName = "zsc104.swf".toString();
    //读到流中
    InputStream inStream=new FileInputStream("c:/zsc104.swf");
    //设置输出的格式 
      response.reset(); 
      response.setContentType("bin");
      response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
    //循环取出流中的数据 
      byte[] b = new byte[100]; 
      int len; 
      while((len=inStream.read(b)) >0) 
      response.getOutputStream().write(b,0,len);  
      inStream.close(); 
    %>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢?
      

  3.   

    谢谢大家。
    我还想知道,如何在下载文件的时候,优先去找网络蚂蚁,flashget等下载工具呢?!
      

  4.   

    6。文件下载<%@ page contentType="text/html; charset=gb2312" %>
    <%@ page import="java.io.*" %>
    <%
      String fileName = "zsc104.swf".toString();
    //读到流中
    InputStream inStream=new FileInputStream("c:/zsc104.swf");
    //设置输出的格式 
      response.reset(); 
      response.setContentType("bin");
      response.addHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
    //循环取出流中的数据 
      byte[] b = new byte[100]; 
      int len; 
      while((len=inStream.read(b)) >0) 
      response.getOutputStream().write(b,0,len);  
      inStream.close(); 
    %>为什么在打开的下载对话框中显示的文件名是当前的网页名称,而不是所下载的文件名呢?并且不可下载,说没有这个文件,只有在第二次打开时才可以显示下载的文件名,才可以正常下载?
      

  5.   

    <%@ page import="java.io.*"%>
    <%@ page import="java.net.*"%>
    <%
    int bytesum=0;
    int byteread=0;URL url = new URL("http://pimg.163.com/sms/micheal/logo.gif");
     URLConnection conn = url.openConnection();
     InputStream inStream = conn.getInputStream();
     FileOutputStream fs=new FileOutputStream( "c:/abc.gif");  byte[]  buffer =new  byte[1444];
       int length;
        while ((byteread=inStream.read(buffer))!=-1)
        {
           out.println("<DT><B>"+byteread+"</B></DT>");
           bytesum+=byteread;
           System.out.println(bytesum);
           fs.write(buffer,0,byteread);
         }%>
    晕!
    老大不关闭文件的?
    这样文件下载以后不允许进行操作啊!
    加上一句吧:
    fs.close();
    OK???