servlet中操作文件。
因为Servlet本来就是一个java文件,因此servlet当中操作文件盒普通java文件操作文件是一样的。
java.io
类 FileReader
java.io.FileReader
所有已实现的接口:
public class FileReader
extends InputStreamReader
用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。
FileReader
public FileReader(File file)
throws FileNotFoundException
在给定从中读取数据的 File 的情况下创建一个新 FileReader。
参数:
file- 要从中读取数据的 File
抛出:
FileNotFoundException- 如果文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取。
FileReader
public FileReader(String fileName)
throws FileNotFoundException
在给定从中读取数据的文件名的情况下创建一个新 FileReader。
参数:
fileName- 要从中读取数据的文件的名称
抛出:
FileNotFoundException- 如果指定文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取。
public class BufferedReader
extends Reader
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。
从以下版本开始:
JDK1.1
另请参见:
//演示如何在serlvet中操作文件
//演示如何读取文件的内容
package com.tsinghua;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletFileTest1 extendsa HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//创建一个FileReader
FileReader f=new FileReader("f:\\myCounter.txt");
BufferedReader bw=new BufferedReader(f);
//读出一行数据 读几行都是可以的
String numVal=bw.readLine();
//一定要关闭文件流 也是为了安全考虑
bw.close();
pw.println("从文件中读取的数据是:"+numVal);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
//演示如何在serlvet中操作文件
//演示如何在文件中写入数据
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class ServletFileTest2 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//创建一个FileWriter 看内存数据 -> 磁盘文件(写入,输出)
//看内存数据 <- 磁盘文件(读入,输入)
FileWriter f=new FileWriter("f:\\myCounter.txt");
BufferedWriter bw=new BufferedWriter(f);
//在文件中写入数据
bw.write("1");
//关闭文件流
bw.close();
pw.println("在文件中写入了数据");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}