读取过程:
- 硬盘文件项工厂
- servlet文件上传工具
- 文件项迭代器
- 文件项流
- 输入流
- 缓存数组
- 用数组读取信息
- 用map将文本的来源和 文本内容进行拼接
存在的问题
中间输入的时候 出现了乱码的问题,没有得到解决。。
代码
package Servlet;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class ServletDemo
*/
public class ServletDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
Map<String, String> map = new HashMap<String, String>();
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
FileItemIterator itemIterator = upload.getItemIterator(request);
while(itemIterator.hasNext()){
request.setCharacterEncoding("utf-8");
FileItemStream itStream = itemIterator.next();
InputStream inputStream = itStream.openStream();
BufferedReader bd = new BufferedReader(new InputStreamReader(inputStream));
String infoString = bd.readLine();
if(map.containsKey(itStream.getFieldName())){
String old = map.get(itStream.getFieldName());
map.put(itStream.getFieldName(), old + "-" + infoString);
}else {
map.put(itStream.getFieldName(), infoString);
}
}
for (Map.Entry<String, String> entry : map.entrySet()) {
//出现 乱码问题 , 没有得到解决
System.out.println(entry.getKey() + " " + entry.getValue());
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}