本文共 1130 字,大约阅读时间需要 3 分钟。
流,是一个生产或消费信息的逻辑实体,其通过输入/输出系统和物理设备相连,虽然连接的物理设备不尽相同,但流的工作方式是相同的。
数据流,分为字节流和字符流。
字节流,处理单元为 1 个字节,定义了 InputStream 和 OutputStream 顶层抽象类。
字符流,处理单元为 2 个字节的 Unicode 字符,定义了 Reader 和 Writer 顶层抽象类。
如果要处理文件系统中文件的诸如权限、创建时间、所在路径等相关文件本身的属性,可以使用 File 类。即,该类并不会指定信息怎样从文件中读取或如何存储到文件中,而只是描述文件本身的属性。
在 JSP 中使用该类,导入相应的类库即可:<%@ page import="java.io.*" %>
如下代码,简单的判断文件夹 text 是否存在,如果存在就删除,否则就创建。
<%String path = request.getServletContext().getRealPath("/");path = path + "text";File d = new File(path);if (d.exists()) { d.delete(); out.println("delete file text");}else { d.mkdir(); out.println("directory create "+d.getAbsolutePath());}%>
如果要读写文件,可以使用 FileReader 和 FileWriter 类,创建实例对象时,可以提供一个文件的路径,也可以提供一个 File 实例对象。
在 JSP 中可以直接获取需要的字节流或字符流。
<%request.getReader();request.getInputStream();response.getWriter();response.getOutputStream();%>
在使用 form 表单进行文件的上传及下载时,使用的是字节流。
上传的过程是从 request 中获取字节输入流,读取上传的数据,而后创建文件输出流(FileOutputStream),将读取的数据写到指定位置。
下载的过程是创建文件输入流(FileInputStream)读取指定文件的数据,而后将其写入通过 response 获取的字节输出流中。
也可以使用 jspSmartUpload 包来实现文件的上传及下载,可参见。
对于大文件或多文件上传,可以使用 Commons-FileUpload
组件,可以去官网下载相应的 、 包。
转载地址:http://mpdws.baihongyu.com/