Java 我应该如何将文件扫描到数组或arraylist中,以便可以操纵该文件或将其读回给用户?
我是新来的,所以如果我违反了一些规则,我很抱歉 无论如何,我目前正在学习一门Java课程,我们被分配了这个项目。该项目的重点是使用继承来编写这个程序。我打算制作一个“电话目录”,用户可以使用扫描仪扫描文件,并使用方法执行某些任务。 我的教授将这些列为我课程的要求……课程需要:Java 我应该如何将文件扫描到数组或arraylist中,以便可以操纵该文件或将其读回给用户?,java,arrays,file-io,arraylist,Java,Arrays,File Io,Arraylist,我是新来的,所以如果我违反了一些规则,我很抱歉 无论如何,我目前正在学习一门Java课程,我们被分配了这个项目。该项目的重点是使用继承来编写这个程序。我打算制作一个“电话目录”,用户可以使用扫描仪扫描文件,并使用方法执行某些任务。 我的教授将这些列为我课程的要求……课程需要: 显示整个目录 使用您编写的二进制搜索Java方法,您可以使用您在类中编写的方法来 显示特定条目的内容 删除现有条目 在目录中插入一个条目,保持排序顺序 将整个目录保存到一个文件中 我认为使用arraylist是最有效的
- 显示整个目录
- 使用您编写的二进制搜索Java方法,您可以使用您在类中编写的方法来 显示特定条目的内容
- 删除现有条目
- 在目录中插入一个条目,保持排序顺序
- 将整个目录保存到一个文件中
private Scanner fileIn;
private ArrayList<String> directory = new ArrayList<String>();
public void scanFile() {
try {
Scanner fileIn = new Scanner(new File("directory.txt"));
} catch (FileNotFoundException e) {
System.out.println("Please make sure the directory file is actually there.");
}
}
我计划在结尾使用/作为某种分隔符,告诉Java“嘿,这是一个完整的对象!”
这就是事情变得有点棘手的地方。为了完成这个程序需要做的一切,我需要将它全部扫描到我创建的目录arraylist中。我找不到一个有效的方法来做这件事
我希望能够扫描每一个对象(按行),这意味着每个人都有自己的行。在每一行中,我需要能够从行中提取数据片段。例如,我想在一行中操纵邮政编码,这样我就能够以某种方式识别出来
我想做第二台扫描仪来做这个,但我真的不知道该怎么做
谢谢。最简单的方法是在
,
上使用拆分
方法
假设每个条目放一行,您不必担心
/
,因为这会给您带来分隔。您应该使用nextLine()
例如:
ArrayList<String> list = new ArrayList<>();
Scanner inFile = new Scanner(file);
while (inFile.hasNextLine()) {
String line = inFile.nextLine();
list.add(line);
}
ArrayList list=new ArrayList();
扫描仪内嵌=新扫描仪(文件);
while(infle.hasNextLine()){
字符串行=infle.nextLine();
列表。添加(行);
}
首先,创建一个表示条目基本概念的类,例如
public class DirectoryEntry {
// Add fields and methods as required
// Provide a simple constructor that will allow you to supply
// the basic values for the available fields...
}
接下来,将每个条目放在directory.txt
文件中自己的行上,这样您就可以简单地使用Scanner\hasNextLine
和Scanner\nextLine
读取文件
读取文件,解析每一行,以便将其拆分为各个字段元素,创建一个新实例DirectoryEntry
,并将其添加到某种java.util.List
,例如
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TestFileScanner {
public static void main(String[] args) {
Scanner fileIn = null;
List<DirectoryEntry> enrties = new ArrayList<>(25);
try {
fileIn = new Scanner(new File("directory.txt"));
while (fileIn.hasNextLine()) {
String line = fileIn.nextLine();
// Parse the individual line elements...
DirectoryEntry de = new DirectoryEntry(...);
enrties.add(de);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类测试文件扫描程序{
公共静态void main(字符串[]args){
Scanner fileIn=null;
列表恩尔蒂=新阵列列表(25);
试一试{
fileIn=newscanner(新文件(“directory.txt”);
while(fileIn.hasNextLine()){
String line=fileIn.nextLine();
//解析单个行元素。。。
DirectoryEntry de=新的DirectoryEntry(…);
增加(de);
}
}捕获(FileNotFoundException ex){
例如printStackTrace();
}
}
}
首先将每条记录存储在一行中。这将允许您使用fileIn.nextLine()
Why“ArrayList list”。“名单”不是更好吗?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TestFileScanner {
public static void main(String[] args) {
Scanner fileIn = null;
List<DirectoryEntry> enrties = new ArrayList<>(25);
try {
fileIn = new Scanner(new File("directory.txt"));
while (fileIn.hasNextLine()) {
String line = fileIn.nextLine();
// Parse the individual line elements...
DirectoryEntry de = new DirectoryEntry(...);
enrties.add(de);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}