package springTimer.read;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import springTimer.delfile.DeleteFileUtil;
/**
* 文件的创建 删除 写入 读取 测试
* @author Administrator
*
*/
public class FileTest {
/*
* 创建文件
* filePath 创建文件的路径
*/
public static boolean createFile(String filePath){
boolean returnFlag = false;
try {
File file = new File(filePath);
//判断父级目录是否存在
if(!file.getParentFile().exists()){
File parentFile = file.getParentFile();
boolean b = parentFile.mkdirs();
System.out.println("创建父级目录成功."+b);
}else{
returnFlag = false;
System.out.println("目录已存在."+returnFlag);
}
//判断文件是否存在
if(!file.exists()){
returnFlag = file.createNewFile();
System.out.println("创建文件成功."+returnFlag);
}else{
returnFlag = false;
System.out.println("文件已存在."+returnFlag);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return returnFlag;
}
/**
* 删除文件,可以是文件或文件夹
*
* @param fileName
* 要删除的文件路径
* @return 删除成功返回true,否则返回false
*/
public static boolean delete(String fileName) {
File file = new File(fileName);
if (!file.exists()) {
System.out.println("删除文件失败:" + fileName + "不存在!");
return false;
} else {
if (file.isFile())
return deleteFile(fileName);
else
return deleteDirectory(fileName);
}
}
/**
* 删除单个文件
*
* @param fileName
* 要删除的文件的文件路径
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if (file.exists() && file.isFile()) {
if (file.delete()) {
System.out.println("删除单个文件" + fileName + "成功!");
return true;
} else {
System.out.println("删除单个文件" + fileName + "失败!");
return false;
}
} else {
System.out.println("删除单个文件失败:" + fileName + "不存在!");
return false;
}
}
/**
* 删除目录及目录下的文件
*
* @param dir
* 要删除的目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public static boolean deleteDirectory(String dir) {
// 如果dir不以文件分隔符结尾,自动添加文件分隔符
if (!dir.endsWith(File.separator))
dir = dir + File.separator;
File dirFile = new File(dir);
// 如果dir对应的文件不存在,或者不是一个目录,则退出
if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
System.out.println("删除目录失败:" + dir + "不存在!");
return false;
}
boolean flag = true;
// 删除文件夹中的所有文件包括子目录
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
// 删除子文件
if (files[i].isFile()) {
flag = DeleteFileUtil.deleteFile(files[i].getAbsolutePath());
if (!flag)
break;
}
// 删除子目录
else if (files[i].isDirectory()) {
flag = DeleteFileUtil.deleteDirectory(files[i].getAbsolutePath());
if (!flag)
break;
}
}
if (!flag) {
System.out.println("删除目录失败!");
return false;
}
// 删除当前目录
if (dirFile.delete()) {
System.out.println("删除目录" + dir + "成功!");
return true;
} else {
return false;
}
}
/*
* 写入文件
* filePath 写入文件的路径
*/
public static boolean fileWriter(String filePath){
try {
File file = new File(filePath);
if(!file.getParentFile().exists()){
System.out.println("写入文件目录不存在.");
boolean b = file.getParentFile().mkdirs();
System.out.println("创建父级目录成功."+b);
}
FileWriter fw = new FileWriter(filePath, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append("在已有的基础上添加字符串001\r\n");
bw.write("在已有的基础上添加字符串\r\n");// 往已有的文件上添加字符串
System.out.println("写入字符成功.");
bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/*
* 读取文件
* filePath 写入文件的路径
*/
public static void fileRoad(String filePath){
File file = new File(filePath);
InputStream in = null;
try {
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(file);
FileTest.showAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}
/**
* 读取word文件内容
*
* @param path
* @return buffer
*/
public static String readWord(String path) {
String buffer = "";
try {
if (path.endsWith(".doc")) {
InputStream is = new FileInputStream(new File(path));
WordExtractor ex = new WordExtractor(is);
buffer = ex.getText();
ex.close();
} else if (path.endsWith("docx")) {
OPCPackage opcPackage = POIXMLDocument.openPackage(path);
POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
buffer = extractor.getText();
extractor.close();
} else {
System.out.println("此文件不是word文件!");
}
} catch (Exception e) {
e.printStackTrace();
}
return buffer;
}
/**
* 显示输入流中还剩的字节数
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输入流中的字节数为:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// boolean b = FileTest.createFile("E:\\zhenglilunbotutest\\file.txt");
// boolean b = FileTest.createFile("E:\\zhenglilunbotutest\\a\\v\\d\\file.png");
// boolean b = FileTest.createFile("E:\\zhenglilunbotutest\\a\\v\\d\\file.doc");
// boolean b = FileTest.createFile("E:\\zhenglilunbotutest\\a\\v\\d\\file.xls");
// boolean b = FileTest.createFile("E:\\zhenglilunbotutest\\a\\v\\d\\a.xls");
// boolean delete = FileTest.deleteDirectory("E:\\zhenglilunbotutest\\a");
// boolean fileWriter = FileTest.fileWriter("E:\\zhenglilunbotutest\\121\\a.doc");
FileTest.fileRoad("E:\\zhenglilunbotutest\\121\\b.doc");
}
}