五 JSP 中的文件操作

JSP 中的文件操作

數據流

流,是一個生產或消費信息的邏輯實體,其通過輸入/輸出系統和物理設備相連,雖然連接的物理設備不盡相同,但流的工作方式是相同的。

數據流,分爲字節流和字符流。

字節流,處理單元爲 1 個字節,定義了 InputStream 和 OutputStream 頂層抽象類。

字符流,處理單元爲 2 個字節的 Unicode 字符,定義了 Reader 和 Writer 頂層抽象類。

File 類

如果要處理文件系統中文件的諸如權限、創建時間、所在路徑等相關文件本身的屬性,可以使用 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 表單進行文件的上傳及下載時,使用的是字節流。

<form action="upload.jsp" method="post" enctype="multipart/form-data">
<input type="file" size="30" />
<input type="submit" value="開始上傳"/>
</form>

上傳的過程是從 request 中獲取字節輸入流,讀取上傳的數據,而後創建文件輸出流(FileOutputStream),將讀取的數據寫到指定位置。

下載的過程是創建文件輸入流(FileInputStream)讀取指定文件的數據,而後將其寫入通過 response 獲取的字節輸出流中。

也可以使用 jspSmartUpload 包來實現文件的上傳及下載,可參見博文

對於大文件或多文件上傳,可以使用 Commons-FileUpload 組件,可以去官網下載相應的 commons-fileupload.jarcommons-io.jar 包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章