1实验五:使用文件字符流加密文件一,相关知识点FileInputStream流以字节为单位顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取源中其余的内容,知道源的末尾或流被关闭。FileOutStream流以字节为单位顺序地写文件,只要不关闭流,每次调用writer方法就顺序地向输出流写入内容。二,实验目的本实验的目的是让读者掌握使用文件输入、输出字节流读写文件。三,实验要求编写4个JSP页面giveContent.jsp,writeContent.jsp,lookContent.jsp,readContent.jsp以及两个Tag文件Write.tag和Read.tag。(1)giveContent.jsp的具体要求giveContent.jsp页面提供一个表单,要求该表单提供一个text文本输入框,select下拉列表和一个TextArea文本区,用户可以在text输入框输入文件的名字,在select下拉列表选择一个目录(下拉列表的选项必须是Tomcat服务区所驻留计算机上的目录),通过TextArea输入多行文本。单击表单的提交键将text中输入的文件名字,select下拉列表中选中的目录以及TextArea文本区中的内容提交给writeContent.jsp页面。(2)writeContent.jsp的具体要求writeContent.jsp页面首先获得giveContent.jsp页面提交的文件所在目录,名字以及TextArea文本区中的内容,然后使用Tag标记调用Tag文件Write.tag,并将文件所在目录,名字以及TextArea文本区中的内容传递给Write.tag。(3)lookContent.jsp的具体要求lookContent.jsp页面提够一个表单,该表单提供两个text文本输入框,用户可以向这两个text文本输入框输入目录和文件内容。单击表单的提交键将text中输入的文件目录以及文件名字提交给readContent页面。(4)readContent.jsp的具体要求readContent.jsp页面首先获得lookContent.jsp页面提交的文件目录、名字,然后使用Tag标记调用Tag文件read.jsp,并将文件所在目录、名字传递给Read.tag。(5)Write.tag的具体要求Write.tag文件使用attribute指令获得writeContent.jsp页面传递过来的文件目录和文件名字,然后使用文件字节输入流读取文件,并负责显示所读取的内容。四,实验代码JSP页面代码:inputContent.jsp%@pagecontentType=text/html;charset=GB2312%%@taglibtagdir=/WEB-INF/tagsprefix=file%HTMLBODYbgcolor=yellowFontsize=3FORMaction=write.jspMethod=post输入文件的内容:brTextAreaname=okRows=8Cols=26/TextAreabrInputtype=submitvalue=加密内容写入到文件2/FORMAhref=read.jsp读取文件/A/FONT/BODY/HTMLwrite.jsp%@pagecontentType=text/html;charset=GB2312%%@taglibtagdir=/WEB-INF/tagsprefix=file%HTMLBODYbgcolor=cyanFontsize=3%Stringstr=request.getParameter(ok);if(str.length()0){bytebb[]=str.getBytes(iso-8859-1);str=newString(bb);%file:SecretWritecontent=%=str%/%out.println(br+message);}%Ahref=read.jsp读取文件/A/FONT/BODY/HTMLread.jsp%@pagecontentType=text/html;charset=GB2312%%@taglibtagdir=/WEB-INF/tagsprefix=file%HTMLBODYbgcolor=cyanFontsize=2FORMaction=method=postname=form读取文件:INPUTtype=radioname=Rvalue=secret读取加密的文件INPUTtype=radioname=Rvalue=unsecret读取解密的文件INPUTTYPE=submitvalue=提交name=submit/FORM%Stringcondition=request.getParameter(R);if(condition!=null){%file:SecretReadmethod=%=condition%/TextArearows=6cols=20%=content%%--content是Tag文件返回的对象--%/TextArea%}%brAhref=inputContent.jsp返回inputContent.jsp页面/A/BODY/HTMLTag文件代码:SecretWrite.tag3%@variablename-given=messagescope=AT_END%%@tagpageEncoding=GB2312%%@tagimport=java.io.*%%@attributename=contentrequired=true%%Filedir=newFile(C:/,Students);dir.mkdir();Filef=newFile(dir,save.txt);try{FileWriteroutfile=newFileWriter(f);BufferedWriterbufferout=newBufferedWriter(outfile);chara[]=content.toCharArray();for(inti=0;ia.length;i++)a[i]=(char)(a[i]^12);content=newString(a);bufferout.write(content);bufferout.close();outfile.close();jspContext.setAttribute(message,文件加密成功);}catch(IOExceptione){jspContext.setAttribute(message,文件加密失败);}%SecretRead.tag%@tagpageEncoding=GB2312%%@tagimport=java.io.*%%@attributename=methodrequired=true%%@variablename-given=contentscope=AT_END%%Filedir=newFile(C:/,Students);Filef=newFile(dir,save.txt);StringBuffermess=newStringBuffer();Stringstr;try{FileReaderin=newFileReader(f);BufferedReaderbufferin=newBufferedReader(in);Stringtemp;while((temp=bufferin.readLine())!=null)mess.append(temp);bufferin.close();in.close();str=newString(mess);if(method.equals(secret))jspContext.setAttribute(content,str);elseif(method.equals(unsecret)){chara[]=str.toCharArray();4for(inti=0;ia.length;i++)a[i]=(char)(a[i]^12);str=newString(a);jspContext.setAttribute(content,str);}elsejspContext.setAttribute(content,);}catch(IOExceptione){jspContext.setAttribute(content,);}%五,实验结果及分析试验总结:计算机底层的文件都是二进制文件,本文采用字节流和字符流的区别实现文本的简单加密。FileReader和FileWriter用于读写字符流,5