package com...utils.file;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import wfc.service.database.Sequence;
public class ReadAndWriteFile {
private static JSONArray jsonArray = new JSONArray();
/**
* 遍历文件夹所有的文件 获取文件名
* @param filepath
* @return
* @throws FileNotFoundException
*/
public static JSONArray readfilename(String filepath) throws FileNotFoundException {
try {
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("文件");
System.out.println("path=" + file.getPath());
System.out.println("absolutepath=" + file.getAbsolutePath());
System.out.println("name=" + file.getName());
} else if (file.isDirectory()) {//是文件夹
String[] filelist = file.list();
//
int filelength = filelist.length;
for (int i = 0; i < filelength; i++) {
JSONObject json = new JSONObject();
File readfile = new File(filepath + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
String filename = readfile.getName();
json.put("name", filename);
jsonArray.add(json);
//是文件夹继续遍历
} else if (readfile.isDirectory()) {
readfilename(filepath + "\\" + filelist[i]);
}
}
}
} catch (FileNotFoundException e) {
System.out.println("readfilename() Exception:" + e.getMessage());
}
return jsonArray;
}
/**
* 删除文件
* @param delpath
*/
public static void deleteFile(String delpath) {
try {
File file = new File(delpath);
if (file.exists()) {
file.delete();
}
} catch (Exception e) {
System.out.println("deletefile() Exception:" + e.getMessage());
}
}
/**
* 更改文件名
* @param filePath
* @param oldFileName
* @param newFilename
*/
public static void renameFile(String filePath, String oldFileName, String newFilename) {
try {
File file = new File(filePath + oldFileName);
if (file.exists()) {
file.renameTo(new File(filePath + newFilename));
}
} catch (Exception e) {
System.out.println("renamefile() Exception:" + e.getMessage());
}
}
/**
* 判断文件夹下是否存在文件
* @param filepath
* @return
*/
public static boolean hasFile(String filepath) {
File start = new File(filepath);
String[] filePath = start.list();//获取该文件夹下的所有文件以及目录的名字
if(filePath.length>0){
return true;
}
return false;
}
/**
* 文件的拷贝(单个)
* @param sourcePath
* @param newPath
* @return
*/
public static boolean copyFile(String sourcePath, String newPath) {
boolean flag = false;
File readfile = new File(sourcePath);
File newFile = new File(newPath);
if(!readfile.exists()) {
return flag;
}
BufferedWriter bufferedWriter = null;
Writer writer = null;
FileOutputStream fileOutputStream = null;
BufferedReader bufferedReader = null;
InputStream in =null;
try{
in = new FileInputStream(readfile);
fileOutputStream = new FileOutputStream(newFile, true);
writer = new OutputStreamWriter(fileOutputStream,"GBK");
bufferedWriter = new BufferedWriter(writer);
bufferedReader = new BufferedReader(new InputStreamReader(in,"GBK"));
String line = null;
while((line = bufferedReader.readLine()) != null){
bufferedWriter.write(line);
bufferedWriter.newLine();
bufferedWriter.flush();
}
flag = true;
} catch(IOException e) {
flag = false;
e.printStackTrace();
} finally {
try {
if(bufferedWriter != null){
bufferedWriter.close();
}
if(bufferedReader != null){
bufferedReader.close();
}
if(writer != null){
writer.close();
}
if(fileOutputStream != null){
fileOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
* 文件复制(多个)
* @param sourcePathDir
* @param newPathDir
*/
public static void copyDir(String sourcePathDir, String newPathDir) {
File start = new File(sourcePathDir);
File end = new File(newPathDir);
String[] filePath = start.list();//获取该文件夹下的所有文件以及目录的名字
if(!end.exists()) {
end.mkdir();
}
boolean flag = false;
for(String temp : filePath) {
//添加满足情况的条件
if(new File(sourcePathDir + temp).isDirectory()){
System.out.println("文件:"+temp+" 是文件夹");
return;
}
if(new File(sourcePathDir + temp ).isFile()&& temp.endsWith(".js")) {
//为文件则进行拷贝
flag = copyFile(sourcePathDir + temp, newPathDir + temp );
}
String Str="";
if(flag){
Str = readJsonFile(sourcePathDir + temp);
temp = temp.substring(0,temp.indexOf("."));
writeJsonString(newPathDir + temp +"--copy.js", Str);
//删除源文件
deleteFile(sourcePathDir + temp+".js");
deleteFile(newPathDir + temp+".js");
System.out.println("文件:" + temp + ",复制成功!");
}else{
System.out.println("文件:" + temp + ",复制失败!");
}
}
}
public static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
if (!jsonFile.exists()) {
return "";
}
Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "GBK");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public static void writeJsonString(String filepath, String jsonObject) {
try {
File file = new File(filepath);
if (!file.exists())// 判断文件是否存在,若不存在则新建
{
file.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(file);// 实例化FileOutputStream
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");// 将字符流转换为字节流
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);// 创建字符缓冲输出流对象
String jsonString = jsonObject.toString();// 将jsonObject数组转化为字符串
bufferedWriter.write(jsonString);// 将格式化的jsonarray字符串写入文件
bufferedWriter.flush();// 清空缓冲区,强制输出数据
bufferedWriter.close();// 关闭输出流
} catch (Exception e) {
e.printStackTrace();
}
}
public static void writeJsonString(String filepath,String oauthId, JSONArray jsonArray) throws IOException {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateString = sdf.format(date);
String code = getSequenceCode(dateString);
File file = new File(filepath + oauthId+"-"+dateString + code + ".json");
if (!file.exists())// 判断文件是否存在,若不存在则新建
{
file.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(file);// 实例化FileOutputStream
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");// 将字符流转换为字节流
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);// 创建字符缓冲输出流对象
String jsonString = jsonArray.toString();// 将jsonarray数组转化为字符串
bufferedWriter.write(jsonString);// 将格式化的jsonarray字符串写入文件
bufferedWriter.flush();// 清空缓冲区,强制输出数据
bufferedWriter.close();// 关闭输出流
}
//自增
public static String getSequenceCode(String type) {
return String.format("%08d", Sequence.getNextValue(type));
}
}