从 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);
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);