从文件夹中读取和删除文件
Read and delete files from folder
我正在尝试编写一个程序来读取文件夹中的每个文件,在读取文件中的内容后,文件应该被删除。我可以编写程序来分别从一个文件夹中读取文件并从一个文件夹中删除文件,但无法将它们都集成到一个程序中。
您可以使用类似以下的方法:
public static void listFilesForFolder(File folder) {
for (final File fileEntry : folder.listFiles()) {
try {
File newFile = new File(fileEntry.getName()));
/*read the newFile whatever way you want to*/
/* then after reading delete it */
if(newFile.delete()){
System.out.println("File is deleted");
}else {
System.out.println("Could not delete file");
};
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
您可以按照以下方式输入文件夹名称:
File newFile = new File("C://path//to//file//" + fileEntry.getName());
这是我编写和测试的 Java 代码。它工作正常。
它会首先列出指定目录下的所有文件和里面的各级子目录。
然后它会逐一读取指定目录下的所有文件和里面的各级子目录,读取完一个文件就删除。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class RecursiveFileDisplay {
public static void main(String[] args) {
File currentDir = new File("D:\test"); // current directory
File[] fileList = displayDirectoryContents(currentDir);
readAndDeleteFiles(fileList);
}
public static File[] displayDirectoryContents(File dir) {
File[] files = null;
try {
files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("directory:" + file.getCanonicalPath());
//recursive call to fetch file list in all levels of sub-directories
displayDirectoryContents(file);
} else {
System.out.println(" file:" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
return files;
}
public static void readAndDeleteFiles(File[] fileList){
BufferedReader br = null;
for(File file : fileList){
if (!file.isDirectory()){
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(file.getCanonicalPath()));
if (br != null){
System.out.println("Reading file : " + file.getCanonicalPath());
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
br.close();
System.out.println("Finished reading file : " + file.getCanonicalPath());
}
//deleting file
if(file.delete()){
System.out.println(file.getCanonicalPath() + " is deleted!");
}
else{
System.out.println(file.getCanonicalPath() + " could not be deleted!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
else{
//recursive call to fetch file list in all levels of sub-directories and then read & delete each of them
readAndDeleteFiles(file.listFiles());
}
}
}
}
我正在尝试编写一个程序来读取文件夹中的每个文件,在读取文件中的内容后,文件应该被删除。我可以编写程序来分别从一个文件夹中读取文件并从一个文件夹中删除文件,但无法将它们都集成到一个程序中。
您可以使用类似以下的方法:
public static void listFilesForFolder(File folder) {
for (final File fileEntry : folder.listFiles()) {
try {
File newFile = new File(fileEntry.getName()));
/*read the newFile whatever way you want to*/
/* then after reading delete it */
if(newFile.delete()){
System.out.println("File is deleted");
}else {
System.out.println("Could not delete file");
};
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
您可以按照以下方式输入文件夹名称:
File newFile = new File("C://path//to//file//" + fileEntry.getName());
这是我编写和测试的 Java 代码。它工作正常。
它会首先列出指定目录下的所有文件和里面的各级子目录。
然后它会逐一读取指定目录下的所有文件和里面的各级子目录,读取完一个文件就删除。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class RecursiveFileDisplay {
public static void main(String[] args) {
File currentDir = new File("D:\test"); // current directory
File[] fileList = displayDirectoryContents(currentDir);
readAndDeleteFiles(fileList);
}
public static File[] displayDirectoryContents(File dir) {
File[] files = null;
try {
files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("directory:" + file.getCanonicalPath());
//recursive call to fetch file list in all levels of sub-directories
displayDirectoryContents(file);
} else {
System.out.println(" file:" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
return files;
}
public static void readAndDeleteFiles(File[] fileList){
BufferedReader br = null;
for(File file : fileList){
if (!file.isDirectory()){
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(file.getCanonicalPath()));
if (br != null){
System.out.println("Reading file : " + file.getCanonicalPath());
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
br.close();
System.out.println("Finished reading file : " + file.getCanonicalPath());
}
//deleting file
if(file.delete()){
System.out.println(file.getCanonicalPath() + " is deleted!");
}
else{
System.out.println(file.getCanonicalPath() + " could not be deleted!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
else{
//recursive call to fetch file list in all levels of sub-directories and then read & delete each of them
readAndDeleteFiles(file.listFiles());
}
}
}
}