首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用扫描仪读取循环中的多个文件

使用扫描仪读取循环中的多个文件
EN

Stack Overflow用户
提问于 2022-05-17 16:54:01
回答 3查看 265关注 0票数 0

对于一个学校项目,我试图创建一个程序,使用扫描仪读取文本文件的每一行,并将其存储在一个变量中。该程序对给定目录中的每个文件执行此操作。

代码语言:javascript
运行
复制
  public static void init(final File folder) throws FileNotFoundException {

String foo, bar;
int slime, grit, ball, funk;
int count = folder.list().length;


for (final File fileEntry: folder.listFiles()) {

if(fileEntry.isDirectory()) {

init(fileEntry);

} else {
    readfile(folder);
}

}

我已经成功地让程序在没有循环的情况下对一个文件执行此操作,但是一旦添加了循环,它就无法运行。不过,我有代码要编译。.txt文件中只有一定数量的行,每一行都有相似的内容。

代码语言:javascript
运行
复制
public static void readfile(final File folder) throws FileNotFoundException  {

File file = folder;

String foo, bar;
int slime, grit, ball, funk;
Scanner input = new Scanner(file);


while (input.hasNextLine()) {

foo = input.nextLine();

System.out.println(foo);

bar = input.nextLine();

System.out.println(bar);

slime = input.nextInt();

System.out.println(slime);

grit = input.nextInt();

System.out.println(grit);

ball = input.nextInt();

System.out.println(ball);

funk = input.nextInt();

System.out.println(funk);

break;

}


}

在运行该文件时,我会得到以下错误:

代码语言:javascript
运行
复制
Exception in thread "main" java.io FileNotFoundException: home/work/txt (Is a directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream<init>(FileInputStream.java:157)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at FileRead.readfile(FileRead.java:24)
at FileRead.init(FileRead.java:75)
at FileRead.main(FileRead.java:12)

主要的方法也没有什么特别之处。

代码语言:javascript
运行
复制
public class FileRead {

public static void main(String args[]) throws FileNotFoundException {

final File folder = new File("/home/work/txt");

init(folder);


}

该程序的目标是创建一个存储字符串和int值的对象,供以后使用。将有一些计算,但我不认为这些细节将是重要的,因为他们还没有实现。我是在Ubuntu上运行这个的。如果有人能提供任何答案,我将非常感激,谢谢!

EN

Stack Overflow用户

发布于 2022-05-17 17:50:44

要将@ControlAltDel所做的操作与另一种目录迭代方法(在本例中为所有.txt目录)结合起来。您可以通过将路径传递到命令行上的目录来测试这一点:

代码语言:javascript
运行
复制
import java.util.List;
import java.util.ArrayList;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.DirectoryStream;
import java.nio.file.DirectoryIteratorException;
import java.io.IOException;

public class AllFilesScanner {
    public static void main(String[] args) {
        Path dir = Path.of(args[0]);
        List<String> fileStrings = new ArrayList<>();
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{txt}")) {
            for (Path entry : stream) {
                fileStrings.add(new String(Files.readAllBytes(entry)));
            }
        } catch (DirectoryIteratorException ex) {
            ex.printStackTrace();   
        } catch (IOException e) {
            e.printStackTrace();    
        }
        System.out.println(fileStrings);
    }
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72277938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档