java读写io文件

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

发布了33 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sinat_26987533/article/details/83617478