实验九 文件操作
一、实验目的
1. file对象及其操作。
2. 输入输出流FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、FileRead、FileWriter、BufferedRead、BufferedWriter,RandomAccessFile类。
3. 文件上传、下载。
4. 掌握file对象使用以及各种流的读写操作,实现文件上传与下载。
二、实验内容
1、教材9.5.1节 查看JSP源文件。
2、教材9.5.2节 听学《新概念英语》。
三、实验步骤
1.查看JSP源文件
① 实验代码
文件:ch9_1.jsp
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.io.*"%>
<style>
#tom{
font-family:宋体;font-size:28;color:blue
}
</style>
<HTML>
<body id ="tom "bgcolor="#FFBBFF">
<%
StringBuffer sourceCode=new StringBuffer();
request.setCharacterEncoding("utf-8");
String mess = request.getParameter("submit");
if(mess==null)
mess="";
if(mess.contains("源码")){
response.setContentType("text/plain");
String jspPage=request.getServletPath();
String webDir = request.getContextPath();
jspPage =jspPage.substring(1);
webDir = webDir.substring(1);
File f= new File("");
String path = f.getAbsolutePath();
int index = path.indexOf("bin");
String tomcatDir = path.substring(0,index);
File jspFile=new File(tomcatDir+"/webapps/"+webDir,jspPage);
try{
RandomAccessFile randomAccess =
new RandomAccessFile(jspFile,"r");
String s=null;
StringBuffer stringbuffer=new StringBuffer();
while ((s=randomAccess.readLine())!=null){
byte b[] = s.getBytes("iso-8859-1");
sourceCode.append("\n"+new String(b,"utf-8"));
}
}
catch(Exception exp){
out.println(exp);
}
}
%>
JSP文件源代码:<br>
<%=sourceCode %>
<br>
<form action="" method="post">
<input type="submit" id="tom" name ="submit" value="看本页面的源码" />
</form>
</body>
</HTML>
② 运行结果
2.听学《新概念英语》
① 实验代码
文件:EnglishBean.java
package save;
public class EnglishBean {
public String fileName="";
public String fileContent="";
public String fileAudio;
public void setFileName(String str){
fileName=str;
}
public String getFileName(){
return fileName;
}
public void setFileContent(String str){
fileContent=str;
}
public String getFileContent(){
return fileContent;
}
public void setFileAudio(String str){
fileAudio = str;
}
public String getFileAudio(){
return fileAudio;
}
}
文件:ch9_2.jsp
<%@ page import = "java.io.*" %>
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<jsp:useBean id="english" class ="save.EnglishBean" scope="request"/>
<style>
#tom{
font-family:宋体;font-size:22;color:blue
}
</style>
<HTML>
<body id="tom" bgcolor="#ffccff">
<form action="readFile" id="tom" method="post">
选择一篇课文:<br>
<%
File f = new File(".");
String jspPage=request.getServletPath();
String webDir = request.getContextPath();
jspPage =jspPage.substring(1);
webDir = webDir.substring(1);
String path = f.getAbsolutePath();
int index = path.indexOf("bin");
String tomcatDir = path.substring(0,index);
String filePath =tomcatDir+"/webapps/"+webDir+"/englishText";
File fileDir=new File(filePath);
String name [] = fileDir.list();
%>
<select id= tom name="fileName" size =1>
<%
for(int i=0;i<name.length;i++){
%>
<option selected value='<%=name[i]%>'/><%=name[i]%>
<%
}
%>
</select>
<input type=hidden name='filePath' value='<%=filePath%>' />
<br><input type=submit id=tom value="学习" /><br>
<textArea id="tom" rows="15" cols="80">
<%=english.getFileContent()%>
</textArea><br>
<%
if(english.getFileName().length()>0) {
%><br>
<%=english.getFileAudio()%>:<br>
<embed src ='englishAudio/<%=english.getFileAudio()%>' height="56" autostart='false'>
</embed>
<%}
%>
</form>
</body>
</HTML>
文件:eadFile_Servlet.java
package handle;
import save.EnglishBean;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ReadFile_Servlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
EnglishBean fileBean=new EnglishBean();
request.setAttribute("english",fileBean);
String fileContent="";
request.setCharacterEncoding("utf-8");
String filePath=request.getParameter("filePath");
String fileName=request.getParameter("fileName");
if(filePath==null||fileName==null)
return;
if(fileName.length()==0||fileName.length()==0)
return;
fileBean.setFileName(fileName);
String audioFileName =
fileName.substring(0,fileName.lastIndexOf("."))+".mp3";
fileBean.setFileAudio(audioFileName);
try{ File f=new File(filePath,fileName);
RandomAccessFile randomAccess = new RandomAccessFile(f,"r");
String s=null;
StringBuffer stringbuffer=new StringBuffer();
while ((s=randomAccess.readLine())!=null){
byte b[] = s.getBytes("iso-8859-1");
stringbuffer.append("\n"+new String(b));
}
fileContent=new String(stringbuffer);
fileBean.setFileContent(fileContent);
}
catch(Exception exp){
fileContent ="读取失败"+exp.toString();
}
RequestDispatcher dispatcher=
request.getRequestDispatcher("ch9_2.jsp");
dispatcher.forward(request, response);
}
}
文件:web.xml
<web-app>
<servlet>
<servlet-name>readFile</servlet-name>
<servlet-class>handle.ReadFile_Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>readFile </servlet-name>
<url-pattern>/readFile </url-pattern>
</servlet-mapping>
</web-app>
② 运行结果
四、实验总结
通过本次实验掌握使用输入流读取服务器端的文件的方法和MVC模式读取文件的方法,输入输出流的各种类。