当前位置: 首页 > 知识库问答 >
问题:

Java FileWriter跳过文件

燕野
2023-03-14

我有一个文件包:“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");
                }
            }
        }
    }

共有1个答案

西门凯康
2023-03-14

我运行了你的代码,一切似乎都运行得很好。

所有文件均已打印:

  • 一百。txt
  • 一千。txt
  • 一万。txt
  • 十万。txt
  • 一百万。txt

我注意到的一件事是,在完成文件编写器之后,您不会关闭它。也许这就是问题所在。

这是我运行的完整代码。我确实删除了对编号目录的写入,因为这些目录在我的机器上不存在。

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();
            }
        }
    }
}

根据Andy的建议,我们提出了一个解决方案,该解决方案使用了各种资源进行尝试。

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");
                    }
                }
            }
        }
    }
}

 类似资料:
  • 我得到了一个具有以下结构的Vaadin项目: 到目前为止,我从我的IDE(IntelliJ)构建了我的项目 然后用“构建”来包装战争- 我的资源筛选如下: 问题:当我试图用maven构建整个项目时 webapp/WEB-INF/类下的资源被跳过,它们在目标/Project/WEB-INF/类目录中,但变量是${...}(hibernate-dashboard.cfg.xml和quartz.prop

  • 我遇到了Streams的或方法的问题,因为spliterator跳过特定模式(奇数或偶数)的文本部分。应该做什么来处理文本的所有部分?我在这里的方法: 示例输入为: 它将跳过Faysal:2和Faysal:4

  • 我正在使用JMeter运行API负载测试。其中我使用一个CSV文件来传递数据。 应用程序接口: CSV(共赢): CSV 文件 : 问题:JMeter 总是选择具有 isexternal = true 的行,并跳过所有具有 isexternal 作为 false 的行。这是我面临的奇怪行为。任何人都可以解释一下背后的原因吗?

  • 本文向大家介绍C#跳过而,包括了C#跳过而的使用技巧和注意事项,需要的朋友参考一下 示例 SkipWhile() 用于排除元素,直到第一个不匹配为止(这对大多数人来说可能很直观)            

  • 问题内容: 我有一个很长的文件要打印,但是例如跳过前1,000,000行。我查看了cat手册页,但是没有看到任何选择。我正在寻找执行此操作的命令或简单的Bash程序。 问题答案: 你需要尾巴。一些例子: 如果您确实需要跳过特定数量的“第一行”,请使用 即,如果要跳过N行,则开始打印N + 1行。例: 如果只想看最后几行,请省略“ +”号:

  • 在 Mule 4 中,我正在读取一个大型 csv 文件进行转换,需要将内容写入数据库表。csv 文件没有标头。当我默认运行集成时,第一行被跳过,就好像默认值被预先确定为标题一样。 我看了一下应用程序类型。xml,看起来头被设置为false,如下所示 任何建议都将不胜感激。谢谢