java File文件的增,删,改,查

来源:转载

import java.io.BufferedReader;
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.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;




public class FileOperate {

private static FileOperate instance = null;
public static FileOperate getInstance() {
if (instance == null) {
instance = new FileOperate();
}
return instance;
}

public FileOperate(){
}


/**
* 新建目录
* @param folderPath String 如 c:/fqf
* @return boolean
*/
public static void newFolder(String folderPath) {
try {
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
if (!myFilePath.exists()) {
myFilePath.mkdir();
}
}
catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();
}
}

/**
* 新建文件
* @param filePathAndName String 文件路径及名称 如c:/text.txt
* @param fileContent String 文件内容
* @return boolean
*/
public static void newFile(String filePathAndName, String fileContent) {

try {
String filePath = filePathAndName;
filePath = filePath.toString();
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
String strContent = fileContent;
myFile.println(strContent);
resultFile.close();

}
catch (Exception e) {
System.out.println("新建目录操作出错");
e.printStackTrace();

}

}

/**
* 删除文件
* @param filePathAndName String 文件路径及名称 如c:/text.txt
* @param fileContent String
* @return boolean
*/
public static void delFile(String filePathAndName) {
try {
String filePath = filePathAndName;
filePath = filePath.toString();
java.io.File myDelFile = new java.io.File(filePath);
myDelFile.delete();

}
catch (Exception e) {
System.out.println("删除文件操作出错");
e.printStackTrace();

}

}

/**
* 删除文件夹
* @param filePathAndName String 文件夹路径及名称 如c:/text
* @param fileContent String
* @return boolean
*/
public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); //删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); //删除空文件夹

}
catch (Exception e) {
System.out.println("删除文件夹操作出错");
e.printStackTrace();

}

}

/**
* 删除文件夹里面的所有文件
* @param path String 文件夹路径 如 c:/text
*/
public static void delAllFile(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
if (!file.isDirectory()) {
return;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
}
else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path+"/"+ tempList[i]);//先删除文件夹里面的文件
delFolder(path+"/"+ tempList[i]);//再删除空文件夹
}
}
}

/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/text.txt
* @param newPath String 复制后路径 如:f:/text.txt
* @return boolean
*/
public static void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();

}

}

/**
* 复制整个文件夹内容
* @param oldPath String 原文件路径 如:c:/text
* @param newPath String 复制后路径 如:f:/text/ff
* @return boolean
*/
public static void copyFolder(String oldPath, String newPath) {

try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}

if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();

}

}

/**
* 移动文件到指定目录
* @param oldPath String 如:c:/text.txt
* @param newPath String 如:d:/text.txt
*/
public static void moveFile(String oldPath, String newPath) {
copyFile(oldPath, newPath);
delFile(oldPath);

}

/**
* 移动文件夹到指定目录
* @param oldPath String 如:c:/text.txt
* @param newPath String 如:d:/text.txt
*/
public static void moveFolder(String oldPath, String newPath) {
copyFolder(oldPath, newPath);
delFolder(oldPath);

}

/**
* 删除文件中特定内容(txt)
* @param filePath String 如:c:/text.txt
* @param delContent String 如:"123456"
*/
public static void delFileConcent(String filePath,String delContent) {
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String rowtxt = null;
List < String > list = new ArrayList < String > ();
while ((rowtxt = br.readLine()) != null) {
if (rowtxt != null && !"".equals(rowtxt) && !"null".equals(rowtxt)) {
rowtxt=rowtxt.replace(delContent, "");
list.add(rowtxt);
}
}
filePath = filePath.toString();
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
String strContent = "";
for(int i = 0;i < list.size(); i++){
strContent = list.get(i);
if(!"<<<*>>>".equals(strContent)){
myFile.println(strContent);
}
}
resultFile.close();
}
catch (Exception e) {
System.out.println("操作出错");
e.printStackTrace();

}

}

/**
* 修改文件内容
* @param filePath 文件地址
* @param oldContent 修改前内容 String
* @param newContent 修改后内容 String
*/
public static void updateFileConcent(String filePath,String oldContent,String newContent) {
try {
BufferedReader br = new BufferedReader(new FileReader(filePath));
String rowtxt = null;
while ((rowtxt = br.readLine()) != null) {
if (rowtxt != null && !"".equals(rowtxt) && !"null".equals(rowtxt)) {
rowtxt=rowtxt.replace(oldContent, newContent);
}
}
}
catch (Exception e) {
System.out.println("修改操作出错");
e.printStackTrace();

}
}

/**
* 删除文件夹中文件(txt)
* @param folderPath String 如:c:/text
* @param delContent String 如:"123456"
*/
public static void delFolderConcent(String folderPath,String delContent) {
File file=new File(folderPath);
if(file!=null){
if(file.isDirectory()){
File fi[]=file.listFiles();
if(fi!=null){
for(int i=0;i<fi.length;i++){
if(fi[i].isDirectory()){
delFolderConcent(folderPath, null);
}else{
try {
RandomAccessFile read=new RandomAccessFile(fi[i], "r");
String line1=read.readLine();
if(line1.indexOf(delContent)==-1){
fi[i].deleteOnExit();
}
System.out.println(line1);
read.close();

} catch (Exception e) {
System.out.println("操作出错");
e.printStackTrace();
}

}
}
}else{
System.out.println(file);
}
}
}
}

/**
* 全级搜索文件列表
* @param Path 文件位置 如:F://text//
* @return
*/
public static List searchAllFile(String Path){
Set fileNameSet = FileOperate.searchFolder(Path);
// 符合条件的文件路径
List resultFile=new ArrayList();

TreeSet treeSet = new TreeSet(fileNameSet);
for(Iterator i = treeSet.iterator(); i.hasNext();) {
String filePath = i.next().toString();
filePath = filePath.replaceAll("////", "////////");
resultFile.add(filePath);
}
return resultFile;
}

/**
* 单级搜索文件列表
* @param folderPath 文件位置 如 F://text//
* @return
*/
public static HashSet searchFolder(String folderPath){
File file = new File(folderPath);
List fileList = listAllFiles(file);
HashSet fileName = new HashSet(fileList.size());
for(int i = 0; i < fileList.size();i++){
File file2 = (File) fileList.get(i);
boolean add = fileName.add(file2.getAbsolutePath());
}
return fileName;

}

/**
* 搜索文件子方法
* searchFolder 方法的附属方法
* @param directory
* @return
*/
private static List listAllFiles(File directory) {
if(directory == null || !directory.isDirectory()) {
return null;
}
List fileList = new ArrayList();
addSubFileList(directory, fileList);

return fileList;
}

/**
* 搜索文件子方法
* searchFolder 方法的附属方法
* @param file
* @param fileList
*/
private static void addSubFileList(File file, List fileList) {
File[] subFileArray = file.listFiles();
if(subFileArray == null || subFileArray.length == 0) {
return;
}
for(int i = 0; i < subFileArray.length; i++) {
File subFile = subFileArray[i];
if(subFile == null) {
continue;
}
if(subFile.isFile()) {
fileList.add(subFile);
continue;
}else if(subFile.isDirectory()) {
addSubFileList(subFile, fileList);
}
}
}




/**
* 全级搜索文件及内容列表p
* @param Path 文件位置 如:F://text//
* @return
*/
public static List searchAllFileAndContext(String Path){
String content = "";// 某个文件的内容
String encoding = "utf8";// 设置读取文件内容时的文件编码
Set fileNameSet = FileOperate.searchFolder(Path);
// 符合条件的文件路径
List resultFile=new ArrayList();
TreeSet treeSet = new TreeSet(fileNameSet);
for(Iterator i = treeSet.iterator(); i.hasNext();) {
String filePath = i.next().toString();
filePath = filePath.replaceAll("////", "////////");
// System.out.println(filePath);
try {
String lastName = filePath.substring(filePath.lastIndexOf(".")+1);
if(lastName.indexOf("txt")!=-1){
content = SearchStr.readTxt(filePath, encoding);
// System.out.println("文件里面的内容:");
// System.out.println(content);
}
if(!"".equals(content)){
resultFile.add(filePath+"/n文件里面的内容:/n"+content);
}else{
resultFile.add(filePath);
}
}catch(IOException e) {
e.printStackTrace();
}
}
return resultFile;
}
}



分享给朋友:
您可能感兴趣的文章:
随机阅读: