我有这样一个数组fieldContent:
String[] fieldContent={
amtAllocDetailVo.getMid(),
amtAllocDetailVo.getMerName(),
amtAllocDetailVo.getDeveSide(),
amtAllocDetailVo.getMachProvSide(),
amtAllocDetailVo.getSuppProvSide(),
amtAllocDetailVo.getMerType(),
amtAllocDetailVo.getRate(),
amtAllocDetailVo.getProtRate(),
amtAllocDetailVo.getPartnerAmt(),
amtAllocDetailVo.getCompanyAmt()
};
//amtAllocDetailVo里面存的是数据表里的相应字段
我想把这个数组在内存(不保存在硬盘上)中保存为.txt文件,传输给客户端(JSP页面下载)。
请问怎么实现?(JSP页面上的下载按钮代码我已经写了)

解决方案 »

  1.   

    FileWriter fw=new FileWriter(path + "file://XXXX.txt);//建立FileWriter对象,并实例化fw 
    //将字符串写入文件 
    foreach(string str : fieldContent)
    {
    fw.write(str); 
    }
    fw.close(); 
      

  2.   

    或许你还没有明白我得意思。FileWriter fw=new FileWriter(path + "file://XXXX.txt);path + "file://XXXX.txt  这是一个物理路径了。在内存中将数组用流读出后,保存为*.txt文件(这个*.txt文件不在物理硬盘上,而在内存里)在WEB(JSP页面)上直接给用户下载。就跟使用jxl包,将JSP上的table表格数据,导出excel道理是一样的。
      

  3.   

    将jsp上的数据导出为excel,可能需要用到浏览器客户端的技术。
    如果你是这个意思的话,那么你也可以编写客户端的脚本或组件来生成txt文件。
      

  4.   

    在JSP中的request对象里获取outputstream,然后把文件写入这个流中
      

  5.   

    其实那个也差不了多少,直接把流用out.write输出,我是有做过一个例子,不过现在不在这台电脑上。
      

  6.   

    没有人用代码说话吗? 我现在用代码来吧问题详细解释一下问题吧。
    //list里面存的是amtAllocDetail表中的所有记录 
    Iterator it = list.iterator();
    int i;
    for (i = 3; i < list.size() + 3; i++) {
    amtAllocDetailVo = (AmtAllocDetailVo) it.next();
    String[] fieldContent={
    amtAllocDetailVo.getMid(),
    amtAllocDetailVo.getMerName(),      amtAllocDetailVo.getDeveSide(),    amtAllocDetailVo.getMachProvSide(),
    amtAllocDetailVo.getSuppProvSide(),
    amtAllocDetailVo.getMerType()
    };
    }
    //现在数组fieldContent中已经存了很多数据//将数组中的数据写入.txt文件(不要引入路径,在内存中完成写入工作),JSP页面上直接下载//如下代码是不合适的:
    String fileName = "1";
    File file = new File("d:\\");//这里有D盘着个路径,如果是linux呢?有D盘这概念
    if (file.exists()) {
    try {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    byte[] buffer = new byte[1024];
    fileName = java.net.URLEncoder.encode(fileName, "UTF-8");// 处理中文文件名的问题
    fileName = new String(fileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题
    response.reset();
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型
    response.setHeader("Content-Disposition","attachment; filename=" + fileName+".txt");
    OutputStream os = response.getOutputStream();
    while (bis.read(buffer) > 0) {
    os.write(buffer);
    }
    bis.close();
    os.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    所以我想通过吧数组保存在内存里面,然后把数组中的内容用流写入.txt文件(.txt文件也在内存里面),这样就程序就可以在winodws和linux 移植 不会出现问题。望高手赐教
      

  7.   


    你这已经写的很好了啊,,你现在的过程是 字符串 -> 文件 -> JSP页面。但是你为什么要在中间多出一步来呢?直接从字符串写入jsp页面里不就得了么