package cn.net.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import cn.net.cpzslibs.prot.utils.StrUtils;

public class FileOperation {
	 /** 
	  * 创建文件 
	  * @param fileName 
	  * @return 
	  */  
	 public static boolean createFile(File fileName)throws Exception{  
	  boolean flag=false;  
	  try{  
	   if(!fileName.exists()){  
	    fileName.createNewFile();  
	    flag=true;  
	   }  
	  }catch(Exception e){  
	   e.printStackTrace();  
	  }  
	  return true;  
	 }   
	   
	 
	 public static boolean createDir(String destDirName) {
			File dir = new File(destDirName);
			if (dir.exists()) {// 判断目录是否存在
				System.out.println("创建目录失败，目标目录已存在！");
				return false;
			}
			if (!destDirName.endsWith(File.separator)) {// 结尾是否以"/"结束
				destDirName = destDirName + File.separator;
			}
			if (dir.mkdirs()) {// 创建目标目录
				System.out.println("创建目录成功！" + destDirName);
				return true;
			} else {
				System.out.println("创建目录失败！");
				return false;
			}
		}
	 /** 
	  * 读TXT文件内容 
	  * @param fileName 
	  * @return 
	  */  
	 public static String readTxtFile(File fileName)throws Exception{  
	  String result="";  
	  FileReader fileReader=null;  
	  BufferedReader bufferedReader=null;  
	  try{  
	   fileReader=new FileReader(fileName);  
	   bufferedReader=new BufferedReader(fileReader);  
	   try{  
	    String read=null;  
	    while((read=bufferedReader.readLine())!=null){  
	     result=result+read+"\r\n";  
	    }  
	   }catch(Exception e){  
	    e.printStackTrace();  
	   }  
	  }catch(Exception e){  
	   e.printStackTrace();  
	  }finally{  
	   if(bufferedReader!=null){  
	    bufferedReader.close();  
	   }  
	   if(fileReader!=null){  
	    fileReader.close();  
	   }  
	  }  
	  System.out.println("读取出来的文件内容是："+"\r\n"+result);  
	  return result;  
	 }  
	   
	 public static List<String> readTextFile(File fileName)throws IOException{  
		  String result=null;  
		  List<String> list = new ArrayList<>();
		  FileReader fileReader=null;  
		  BufferedReader bufferedReader=null;  
		  try{  
		   fileReader=new FileReader(fileName);  
		   bufferedReader=new BufferedReader(fileReader);  
		   try{  
		    String read=null;  
		    while((read=bufferedReader.readLine())!=null){  
		    	if (read != null) {
		    		list.add(read);
				}
		     result=result+read+"\r\n";  
		    }  
		   }catch(Exception e){  
		    e.printStackTrace();  
		   }  
		  }catch(Exception e){  
		   e.printStackTrace();  
		  }finally{  
		   if(bufferedReader!=null){  
		    bufferedReader.close();  
		   }  
		   if(fileReader!=null){  
		    fileReader.close();  
		   }  
		  }  
//		  System.out.println("读取出来的文件内容是："+"\r\n"+result);  
		  return list;  
		 } 
	   
	 public static boolean writeTxtFile(String content,File  fileName)throws Exception{  
	  RandomAccessFile mm=null;  
	  boolean flag=false;  
	  FileOutputStream o=null;  
	  try {  
	   o = new FileOutputStream(fileName);  
	      o.write(content.getBytes("GBK"));  
	      o.close();  
	//   mm=new RandomAccessFile(fileName,"rw");  
	//   mm.writeBytes(content);  
	   flag=true;  
	  } catch (Exception e) {  
	   // TODO: handle exception  
	   e.printStackTrace();  
	  }finally{  
	   if(mm!=null){  
	    mm.close();  
	   }  
	  }  
	  return flag;  
	 }  
	  
	 public static List<String> readByIO(String path) throws IOException{
			List<String> l = new ArrayList<>();
			String result=null; 
			FileInputStream inputStream = null;
			Scanner sc = null;
			try {
			    inputStream = new FileInputStream(path);
			    sc = new Scanner(inputStream, "UTF-8");
			    while (sc.hasNextLine()) {
			        String line = sc.nextLine();
			        if (!StrUtils.isEmpty(line)) {
						l.add(line);
						System.out.println("line:" + line);
//						result=result+line+"\r\n";  
					}
			    }
			    
			    FileOperation f = new FileOperation();
			    // note that Scanner suppresses exceptions
			    if (sc.ioException() != null) {
			        throw sc.ioException();
			    }
			} finally {
			    if (inputStream != null) {
			        inputStream.close();
			    }
			    if (sc != null) {
			        sc.close();
			    }
			    return l;
			}
		}
	 public static void saveFile(String destDirName,String fileName,String saveStr) {
			Date d = new Date();
//			DateFormat format = new SimpleDateFormat("yyyy-MM-dd HHmmss"); //
			DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			String s = format.format(d);

			FileOperation operation = new FileOperation();
//			String filePath = "D:\\echo\\JinTestData\\" + s + "\\trays.text";
//			String destDirName = "D:\\echo\\JinTestData\\log\\" + s;
			String filePath = destDirName + "\\" + fileName + System.currentTimeMillis()+".txt";
			
			
			
			try { 
//				System.err.println(trays.size() + " trays:" + trays.toString());
//				System.out.println(" trayStr:" + trayStr.toString());
				operation.createDir(destDirName);
				operation.createFile(new File(filePath));
//				写入
				
				operation.contentToTxt(filePath, saveStr); 
				// List<String> l = operation.readTextFile(new File(filePath)); //

			} catch (Exception e) { // TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	public static void contentToTxt(String filePath, String content) {  
	        String str = new String(); //原有txt内容  
	        String s1 = new String();//内容更新  
	        try {  
	            File f = new File(filePath);  
	            if (f.exists()) {  
	                System.out.print("文件存在");  
	            } else {  
	                System.out.print("文件不存在");  
	                f.createNewFile();// 不存在则创建  
	            }  
	            BufferedReader input = new BufferedReader(new FileReader(f));  
	  
	            while ((str = input.readLine()) != null) {  
	                s1 += str + "\n";  
	            }  
	            System.out.println(s1);  
	            input.close();  
	            s1 += content;  
	  
	            BufferedWriter output = new BufferedWriter(new FileWriter(f));  
	            output.write(s1);  
	            output.close();  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	  
	        }  
	    }  
}
