我在使用Java制作多个文件时遇到问题。我希望它能够将n个相同的文件放在一个已定义的目录中。出于某种原因,现在它将生成1个文件,然后继续使用第一个文件的名称制作新文件,这基本上刷新了文件。我认为它可能会发生,因为它没有更新我的全局名称变量。到目前为止,这是我的代码:
import java.io.*;
public class Filemaker{
//defining our global variables here
static String dir = "/Users/name/Desktop/foldername/"; //the directory we will place the file in
static String ext = ".txt"; //defining our extension type here
static int i = 1; //our name variable (we start with 1 so our first file name wont be '0')
static String s1 = "" + i; //converting our name variable type from an integer to a string
static String finName = dir + s1 + ext; //making our full filename
static String content = "Hello World";
public static void create(){ //Actually creates the files
try {
BufferedWriter out = new BufferedWriter(new FileWriter(finName)); //tell it what to call the file
out.write(content); //our file's content
out.close();
System.out.println("File Made."); //just to reassure us that what we wanted, happened
} catch (IOException e) {
System.out.println("Didn't work");
}
}
public static void main(String[] args){
int x = 0;
while(x <= 10){ //this will make 11 files in numerical order
i++;
Filemaker.create();
x++;
}
}
}
看看你的代码中是否能找到导致这种情况发生的错误。
答案 0 :(得分:2)
初始化时,您设置finName
一次。相反,您应该在create()
函数中更新它。例如:
public static void create(){ //Actually creates the files
String finName = dir + i + ext;
try {
BufferedWriter out = new BufferedWriter(new FileWriter(finName)); //tell it what to call the file
out.write(content); //our file's content
out.close();
System.out.println("File Made."); //just to reassure us that what we wanted, happened
} catch (IOException e) {
System.out.println("Didn't work");
}
}
答案 1 :(得分:1)
首先,您在i
变量的静态定义中使用了s1
变量。这对我来说很奇怪,让我觉得你期待一次又一次地重新定义。
相反,请在create()
函数中重新定义s1变量,使其实际递增。
此外,将来在解决此类问题时,您可以使用System.out.println()
语句将输出打印到控制台以跟踪程序的执行情况。要获得更高级的需求,请使用日志记录解决方案或IDE的调试器来跟踪程序执行并插入断点。
答案 2 :(得分:0)
字符串是不可变的,因此finName
在第一次初始化后永远不会改变。
在您的create方法中,您必须重新创建文件路径。