注意 以下範例是針對一個放在根目錄下的檔案進行測試
首先先來看看網頁如何呈現,那以下我分兩種來說明ㄧ個是針對字串依個是針對二元碼作處理
在JSP中寫入一些 scriptlets
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
//省略 HTML....
<%
//透過 application 隱含物件 取得真實路徑
String path = application.getRealPath("simple.txt");
java.io.BufferedInputStream bi = new java.io.BufferedInputStream(new java.io.FileInputStream(path));
byte[] b = new byte[1024]; //1KB
int num = 0;
while((num = bi.read(b)) != -1){
String str = new String(b); //轉成字串
str = str.replaceAll("\n", "<br />"); //替換所有的換行字元 成 "<br />"
out.print(str);
}
/*以下註解的地方為使用純文字處理的方式*/
/*java.io.BufferedReader br = new java.io.BufferedReader(new
java.io.FileReader(path));
String r = "";
while((r = br.readLine()) != null){
out.println("<p>" + r + "</p>");
}*/
%>
接著可以以一個 form 表單讓使用者輸入欲加入的檔案內容
<form action="/test/addInFile.do" method="post">
<textarea name='inut' rows='5' cols='50' ></textarea>
<input type="submit" value="送出" />
</form>
以下為進行處理得 servlet > addInFile.java
package fsc.controller; import java.io.BufferedWriter; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class checkLogin extends HttpServlet { public checkLogin() { super(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType( "text/html;charset=UTF-8 "); java.io.PrintWriter out = response.getWriter(); String intpuText = request.getParameter("inut"); //以下以二元處理寫入 try{ String path = getServletContext().getRealPath("simple.txt"); BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(path, true)); byte[] b = intpuText.getBytes(); //將字串轉成二元陣列 bw.write(b); bw.close(); }catch(IOException e){} //以下為純文字處理檔案寫入 /*try{ String path = getServletContext().getRealPath("simple.txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(path, true)); bw.newLine(); bw.close(); }catch(IOException e){}*/ request.getRequestDispatcher("finish.jsp").forward(request, response); } }
最後在 finish.jsp 觀看結果, 程式撰寫跟前面介紹的大致相同
最後提醒以上案例是以根目錄下的檔案進行,如果是本機別的地方如C槽
那就直接使用 File 吧
如果遇到亂碼問題可以試試先將原文轉成 ISO-8859-1,在案指定編碼轉成 String
沒有留言:
張貼留言