JavaIO之输入输出流链(一)

package three.day.io;


import java.io.*;




public class StreamChainDemo01 
{
public static void main(String[] args) throws IOException 
{
FileOutputStream fos = new FileOutputStream("Hello.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("Hello,this is lirizhong\n");
bw.write("Hello,this is zhongrili\n");
bw.flush();
bw.close();
osw.close();
fos.close();

FileInputStream fis = new FileInputStream("Hello.txt");
InputStreamReader osr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(osr);
System.out.println(br.readLine());
System.out.println(br.readLine());
br.close();
osr.close();
fis.close();
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的角度来看,将文件作为一个接提供下载有两个主要的步骤:生成文件接和响应用户下载请求。 生成文件接 要生成文件接,我们需要将文件存储在服务器或云存储中,并为其分配一个URL。这可以通过Java的网络编程API完成。以下是通过Java代码生成文件接的示例: ``` public String getDownloadLink(String fileName) throws MalformedURLException { //假设文件路径为/storage/abc.txt File file = new File("/storage/" + fileName); String fileURL = file.toURI().toURL().toString(); return fileURL; } ``` 该代码将文件名作为参数传递给函数,并使用Java的File类创建一个文件对象。然后,使用文件对象的toURI()和toURL()方法获取文件的URL。 响应用户下载请求 一旦生成了文件接,我们需要为用户提供一种方法来下载文件。在Java中,可以使用HttpServletResponse类的功能来响应用户请求,并向用户发送文件。 以下是通过Java代码响应用户下载请求的示例: ``` @RequestMapping("/download/{fileName}") public void downloadFile(@PathVariable("fileName") String fileName, HttpServletResponse response) { try { //根据文件名获取文件接 String fileURL = getDownloadLink(fileName); //设置response参数 response.setContentType("application/octet-stream"); response.setHeader("Content-Transfer-Encoding", "binary"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); //获取文件输入流 InputStream is = new URL(fileURL).openStream(); BufferedInputStream bis = new BufferedInputStream(is); //获取输出流 OutputStream os = response.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(os); //将文件写入输出流 byte[] buffer = new byte[1024]; while (true) { int bytesRead = bis.read(buffer); if (bytesRead == -1) break; bos.write(buffer, 0, bytesRead); } //关闭输入流和输出流 bos.flush(); bos.close(); bis.close(); } catch (Exception e) { e.printStackTrace(); } } ``` 该代码片段使用Spring MVC框架处理HTTP请求。特别是,它使用@RequestMapping注释的方法来处理/download/{fileName}路径下的HTTP GET请求。当用户在浏览器中访问/download/abc.txt时,服务器将调用该方法并向用户提供文件下载接。 在方法中,我们首先利用之前的函数获取文件接,然后设置响应参数。response.setContentType()告知客户端返回的内容类型为二进制文件。Content-Transfer-Encoding告知客户端使用二进制传输。content-disposition设置了返回的Content-Disposition头信息,告诉浏览器以下载的方式进行保存。 最后,我们使用Java IO库获取文件输入流并将其写入输出流以响应用户请求。最后,我们在调用flush()之前关闭输入流和输出流。 综上所述,Java可以轻松地创建文件下载接并向用户提供文件下载服务。与其他编程语言相比,Java的网络编程API提供了更好的灵活性和扩展性来实现文件下载功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值