从 Java 中的 .txt 文件发出读取和保存行

Issue reading and saving lines from .txt file in Java

Objective & 问题

Objective 我要完成的任务是从提供的路径中找到并读取文本文件,然后将文本文件的每一行复制到 ArrayList<String> 中。这个“ApplicationFileReader”对象是在某些控件 class 中通过调用接受路径的构造函数创建的(它被发送 String、“TextFile.txt” [已填充文本文件的名称在 src 文件夹])。

但是,每当程序运行时,读取路径文件后ArrayList<String>仍然是空的。该代码不会抛出 IOException 这可能意味着它能够找到文件,只是可能无法实际将文本行提取到列表中。 (代码运行良好,只是没有输出)。这有什么原因吗?我是否应该为其他简单的方法放弃这种方法,比如(虽然我仍然对这个问题感到好奇)。

提前致谢

代码说明

一个 ApplicationFileReader 对象由 3 个实例组成:2 个 Strings 用于文件路径和文件的所有文本,一个 ArrayList<String> 用于包含文本文件的每一行。默认构造函数将所有内容设置为空。参数构造函数(采用一个 String)通过验证路径和提取文本行来完成设置所有 3 个实例。

我遗漏了什么吗?请评论。

代码:ApplicationFileReader

//TODO: Send exception to LOGGER to print to console

package model;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;

public class ApplicationFileReader {

    public String filePathLocation;
    public String fileText;
    public ArrayList<String> fileTextLines;
    
    public ApplicationFileReader(){
        filePathLocation = "";
        fileText = "";
        fileTextLines = new ArrayList<String>();
    }
    
    public ApplicationFileReader(String filePathLocation){
        this.filePathLocation = filePathLocation;
        this.fileText = "";
        fileTextLines = new ArrayList<String>();
        extractFileText(filePathLocation);
        
        /* Testing */
        for(String s : fileTextLines)
            System.out.println(s);
    }

    public boolean extractFileText(String filePathLocation) {
        if(!validateFilePathLocation(filePathLocation))
            return false;
        try {
            Path path_filePath = Paths.get(filePathLocation);
            fileTextLines.addAll(Files.readAllLines(path_filePath, StandardCharsets.UTF_8));
            for(String eachListLine : fileTextLines){
                fileText += eachListLine;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }

    private boolean validateFilePathLocation(String filePathLocation) {
        try {
            File temporaryFile = new File(filePathLocation);
            if(!temporaryFile.exists() && temporaryFile.isDirectory())
                throw new IOException();
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
}

您根本没有在 extractTextFile() 方法中读取文件。

Files.write()用于将Arraylist的内容写入文件。

您可能想要使用 Files.readAllLines(path);