Java 用于以递归方式保存文件的文件处理
我让我的代码生成了两个包含可重写数据的文件。我需要一个代码来继续生成具有递归文件名的文件,并且应该保留所有以前的文件 在下面的代码中,每次我必须更新我的文件时,我必须硬编码并将其复制到一个新文件中 我需要一个递归函数来保存文件,文件以数字顺序命名(升序),同时每次运行代码时都将数据保存在上一个文件中 公共静态void main(字符串[]args)引发IOException {Java 用于以递归方式保存文件的文件处理,java,iteration,filenames,file-handling,Java,Iteration,Filenames,File Handling,我让我的代码生成了两个包含可重写数据的文件。我需要一个代码来继续生成具有递归文件名的文件,并且应该保留所有以前的文件 在下面的代码中,每次我必须更新我的文件时,我必须硬编码并将其复制到一个新文件中 我需要一个递归函数来保存文件,文件以数字顺序命名(升序),同时每次运行代码时都将数据保存在上一个文件中 公共静态void main(字符串[]args)引发IOException { createFileUsingFileClass(); copyFileVersion
createFileUsingFileClass();
copyFileVersion();
fileChecker();
String data_2 = "This is the new data written in your file";
writeUsingFileWriter(data_2);
copyFileInCode(data_2);
}
private static void createFileUsingFileClass() throws IOException
{
File file = new File("C:\\Users\\esunrsa\\Documents\\file.txt");
//Create the file
if (file.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
//Write Content
FileWriter writer = new FileWriter(file);
String data_1 = " Initial data";
writer.write(data_1);
writer.close();
}
private static void copyFileVersion() {
FileInputStream ins = null;
FileOutputStream outs = null;
try {
File infile =new File("C:\\Users\\esunrsa\\Documents\\file.txt");
File outfile =new File("C:\\Users\\esunrsa\\Documents\\file_01.txt");
ins = new FileInputStream(infile);
outs = new FileOutputStream(outfile);
byte[] buffer = new byte[1024];
int length;
while ((length = ins.read(buffer)) > 0) {
outs.write(buffer, 0, length);
}
ins.close();
outs.close();
System.out.println("File created successfully!!");
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
private static void fileChecker() {
File f = new File("C:\\Users\\esunrsa\\Documents\\sunrita.txt");
if(f.exists()){
System.out.println("File existed");
}else{
System.out.println("File doesnt exist");
System.exit(0);
//System.out.println("File not found!");
}
}
private static void writeUsingFileWriter(String data_2) {
File file = new File("C:\\Users\\esunrsa\\Documents\\file.txt");
FileWriter fr = null;
try {
fr = new FileWriter(file);
fr.write(data_2);
} catch (IOException e) {
e.printStackTrace();
}finally{
//close resources
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void copyFileInCode(String filename) {
FileInputStream ins = null;
FileOutputStream outs = null;
try {
File infile =new File("C:\\Users\\esunrsa\\Documents\\file.txt");
File outfile =new File("C:\\Users\\esunrsa\\Documents\\file_02.txt");
ins = new FileInputStream(infile);
outs = new FileOutputStream(outfile);
byte[] buffer = new byte[1024];
int length;
while ((length = ins.read(buffer)) > 0) {
outs.write(buffer, 0, length);
}
ins.close();
outs.close();
System.out.println("File created successfully!!");
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}我不认为你真正的意思是“递归”。但你的问题并不完全清楚。您是否只需要一个方案来不断地生成新的文件名?如果是这样,那么选择一个合理的命名约定。例如,使用公共基名称并附加当前日期或日期和时间。例如
foo201806051020
和foo201806051021
等。您可以通过不删除以前的文件来保留它们。请提供一些文件名的示例。@潜伏者我正在寻找一个简单的方法,可以重命名我将以前的数据复制到的所有文件,这就是生成“GNUs not Unix”附加一些随机整数作为文件名,它们都是递归的!不要在注释中添加代码。请编辑您的问题(请参阅问题下方的“编辑”链接),并在此处添加格式正确的代码。这样人们就更容易看到了。