下载.csv文件Java6

时间:2019-05-08 12:58:19

标签: java java-6

我正在尝试从服务器下载文件。

我有此方法,但是当我打开下载的文件时,它位于ByteCode中,并且不可读。

            File file = new File(request.getPath());
            response.setContentType("text/csv;charset=utf-8");
            response.setHeader("Content-Disposition","attachment; filename="+file.getName());
            response.setHeader("filename",file.getName());
            OutputStream resOs= response.getOutputStream();
            OutputStream buffOs= new BufferedOutputStream(resOs);
            OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs);

            FileInputStream inputStream = new FileInputStream(file);  //read the file
            try {
                int c;
                while ((c = inputStream.read()) != -1) {
                    outputwriter.write(c);
                }
            } finally {
                inputStream.close();
                outputwriter.flush();
                outputwriter.close();
            }
        };

问题出在哪里?

2 个答案:

答案 0 :(得分:2)

由于您的方法写入字节数据,因此将内容类型设置为application / octet-stream,

            response.setContentType("application/octet-stream");

答案 1 :(得分:1)

您使用输入流从输入文件中读取单个字节。这是一个文本文件,但是如果您不关心文本内容,可以使用流读取它。

接下来,您创建一个BufferedWriter并开始将您从流中读取的字节(8位)作为char写入您的写入器。这是一个问题,恕我直言。

一旦输入文件中包含多字节字符,您就开始做奇怪的事情。

可以使用流读取文本文件,但是您还应该使用流写入输出。请勿混合使用读取器/写入器和流。

即使您使用流读取文件,也可以将内容类型设置为text / csv,前提是该文件当然是文本文件。