package com.kimleysoft.action;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.kimleysoft.utlis.Canstant;
import com.kimleysoft.utlis.StringUtils;
@SuppressWarnings("serial")
public class FileJosn extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String name =(String) paramNames.nextElement();
String value = request.getParameter(name);
System.out.println(name+"="+value);
}
//数据1
String date = request.getParameter("date")==null?"":request.getParameter("date");
//工单号作为文件名称
String fileName = request.getParameter("jobno")==null?"":request.getParameter("jobno");
//根据工单号查找数据
String findJobno = request.getParameter("findJobno")==null?"":request.getParameter("findJobno");
if(!StringUtils.isEmpty(date) && !StringUtils.isEmpty(fileName)){
String filePath = "d:\\" + File.separator + fileName + ".txt";
creatTxtFile(fileName);
boolean b = writeTxtFile(date, filePath);
System.out.println("----数据写入.txt成功-------------");
PrintWriter out = response.getWriter();
out.print(b);
out.flush();
out.close();
out =null;
}else if(!StringUtils.isEmpty(findJobno)){
String filePath ="d:\\" + File.separator + findJobno + ".txt";
PrintWriter out = response.getWriter();
String str = readTxtFile(filePath);
out.print(str);
out.flush();
out.close();
out =null;
}else{
System.out.println("------------------数据不存在----------------");
}
}
/**
* 创建文件
* @param fileName
* @return filePath
* @throws IOException
*/
public static boolean creatTxtFile(String fileName) throws IOException {
boolean flag = false;
File file = new File(Canstant.FILEDATEJSON_URL);
if(!file.exists()){
file.mkdirs();
}
String filePath = Canstant.FILEDATEJSON_URL + File.separator + fileName + ".txt";
File filename = new File(filePath);
if (!filename.exists()) {
filename.createNewFile();
flag = true;
}
return flag;
}
/**
* 写文件
*
* @param newStr
* 新内容
* @param filenameTemp
* 文件路径
* @throws IOException
*/
public static boolean writeTxtFile(String newStr,String filePath) throws IOException {
// 先读取原有文件内容,然后进行写入操作
boolean flag = false;
String filein = newStr + "\r\n";
String temp = "";
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
FileOutputStream fos = null;
PrintWriter pw = null;
try {
// 文件路径
File file = new File(filePath);
// 将文件读入输入流
fis = new FileInputStream(file);
isr = new InputStreamReader(fis,"UTF-8");
br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer();
// 保存该文件原有的内容
/*for (int j = 1; (temp = br.readLine()) != null; j++) {
buf = buf.append(temp);
// System.getProperty("line.separator")
// 行与行之间的分隔符 相当于“\n”
buf = buf.append(System.getProperty("line.separator"));
}*/
buf.append(filein);
fos = new FileOutputStream(file);
pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
flag = true;
} catch (IOException e1) {
// TODO 自动生成 catch 块
throw e1;
} finally {
if (pw != null) {
pw.close();
}
if (fos != null) {
fos.close();
}
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (fis != null) {
fis.close();
}
}
return flag;
}
/**
* 功能:Java读取txt文件的内容
* 步骤:1:先获得文件句柄
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流
* 4:一行一行的输出。readline()。
* 备注:需要考虑的是异常情况
* @param filePath
*/
public static String readTxtFile(String filePath){
StringBuffer shstr = new StringBuffer();
try {
String encoding="UTF-8";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判断文件是否存在
InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
shstr.append(lineTxt);
//System.out.println("--lineTxt="+lineTxt);
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
// System.out.println("all lineTxt="+shstr.toString());
return shstr.toString();
}
}
这个是一个类接下来配置下web.xml
<servlet>
<servlet-name>fileJosn</servlet-name>
<servlet-class>com.kimleysoft.action.FileJosn</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileJosn</servlet-name>
<url-pattern>/data.html</url-pattern>
</servlet-mapping>
最终访问地址是
存
http://127.0.0.1:8080/项目名称/data.html?jobno=545465&date=dfasdfsfsfsdfsfsfsfsf
取
http://127.0.0.1:8080/项目名称/data.html?findJobno=545465