我有一个包含文件的包:"100.txt“、"1000.txt”、"10000.txt“、"100000.txt”、"1000000.txt“。但是当我启动我的程序时,它会跳过100和1000 txt文件。你能告诉我为什么吗?
public void generateData(Path path) throws IOException {
for (int i = 1; i <= 5; i++){
for (int j = 100; j <= 1000000; j*=10){
FileWriter fileWriter = new FileWriter(path.resolve(Integer.toString(i)).resolve(j + ".txt").toFile());
Random random = new Random();
for (int k = 0; k < j; k++){
int num = random.nextInt(10);
fileWriter.write(num);
fileWriter.write("\n");
}
}
}
}发布于 2022-04-13 14:38:32
我运行了你的代码,一切都运行得很好。
所有文件均已打印:
有一件事我注意到,你没有关闭你的FileWriter后,你完成了它。也许这就是问题所在。
这是我运行的完整代码。我确实删除了将文件写入编号目录的操作,因为我的计算机上不存在这些目录。
package forloop;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Random;
public class GenerateData {
public static void main(String[] args) throws IOException {
Path path = Paths.get("");
generateData(path);
}
public static void generateData(Path path) throws IOException {
for (int i = 1; i <= 5; i++){
for (int j = 100; j <= 1000000; j*=10){
FileWriter fileWriter = new FileWriter(path.resolve(j + ".txt").toFile());
Random random = new Random();
for (int k = 0; k < j; k++){
int num = random.nextInt(10);
fileWriter.write(num);
fileWriter.write("\n");
}
fileWriter.close();
}
}
}
}基于安迪的建议,一种使用资源试用的解决方案。
package forloop;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Random;
public class GenerateData {
public static void main(String[] args) throws IOException {
Path path = Paths.get("");
generateData(path);
}
public static void generateData(Path path) throws IOException {
for (int i = 1; i <= 5; i++) {
for (int j = 100; j <= 1000000; j*=10) {
try (FileWriter fileWriter = new FileWriter(path.resolve(j + ".txt").toFile())) {
Random random = new Random();
for (int k = 0; k < j; k++){
int num = random.nextInt(10);
fileWriter.write(num);
fileWriter.write("\n");
}
}
}
}
}
}https://stackoverflow.com/questions/71859187
复制相似问题