import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DirectoryArchiver {
public static void archiveDirectory(String sourceDir, String destinationFile) {
File source = new File(sourceDir);
if (!source.exists() || !source.isDirectory()) {
System.err.println("Error: Source directory does not exist or is not a directory.");
return;
}
try (BufferedWriter writer = new BufferedWriter(new FileWriter(destinationFile))) {
List<String> files = listFiles(source);
for (String file : files) {
String filePath = source.getAbsolutePath() + "/" + file; // Construct full path
try(BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
}
}
} catch (IOException e) {
System.err.println("Error archiving directory: " + e.getMessage());
}
}
private static List<String> listFiles(File dir) {
List<String> fileList = new ArrayList<>();
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
fileList.add(file.getName());
} else if (file.isDirectory()) {
// Optionally recursively archive subdirectories
//fileList.addAll(listFiles(file));
}
}
}
return fileList;
}
public static void main(String[] args) {
String sourceDirectory = "source_directory"; // Replace with your source directory
String destinationFile = "archive.txt"; // Replace with your desired destination file
archiveDirectory(sourceDirectory, destinationFile);
System.out.println("Directory archived to " + destinationFile);
}
}
Add your comment