Java 读取文件并将其存储在对象中
我试图从一个文件中读取内容并将其存储到一个名为ToDoList的对象中(我假设是在GetItem方法下)。然后我应该允许用户添加到列表中。但是我不知道如何创建对象并打印它Java 读取文件并将其存储在对象中,java,arrays,object,text-files,Java,Arrays,Object,Text Files,我试图从一个文件中读取内容并将其存储到一个名为ToDoList的对象中(我假设是在GetItem方法下)。然后我应该允许用户添加到列表中。但是我不知道如何创建对象并打印它 public class ToDoList { private ToDoItem[] items; ToDoItem td = new ToDoItem(); String inputline; Scanner keyboard = new Scanner(System.in); int i = 0; String[]
public class ToDoList {
private ToDoItem[] items;
ToDoItem td = new ToDoItem();
String inputline;
Scanner keyboard = new Scanner(System.in);
int i = 0;
String[] stringArray = new String[100];
private void setItems(ToDoItem[] items) throws FileNotFoundException {
File file = new File("ToDoItems.txt");
Scanner ReadFile = new Scanner(file);
while (ReadFile.hasNext()) {
String ListString = ReadFile.nextLine();
stringArray[100] = (ListString);
}
}
private ToDoItem[] getItems() {
return items;
}
public void addItem(int id, String description) {
stringArray[100] = (td.getId() + td.getDescription());
}
public String[] getAddItem() throws FileNotFoundException {
try (PrintWriter fout = new PrintWriter(new File("ToDoItems.txt"))) {
do {
System.out.println("add to the list? [y/n]");
inputline = keyboard.nextLine();
if ("y".equals(inputline)) {
i++;
stringArray[i] = (td.getId() + ". " + td.getDescription() + "\n");
fout.print(stringArray[i]);
} else {
System.out.println("Here is the list so far:");
}
} while ("y".equals(inputline));
return stringArray;
}
}
@Override
public String toString() {
return "ToDoList{" + "items=" + getItems()
+ '}';
}
我应该使用“getAddItem”方法来允许用户添加到列表中。但我不知道如何将数组添加到对象。更不用说制造物体了 你在问一个广泛的问题。以下是一些设计技巧
祝你好运。这是一段小代码,用于扩展pininfarina所说的内容,并帮助你继续前进
public class ToDoItem {
private String id;
private String description;
public ToDoItem(String id, String description) {
this.id = id;
this.description = description;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public class RunIt {
private static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) throws FileNotFoundException {
ToDoList list = new ToDoList("ToDoItems.txt");
try (PrintWriter fout = new PrintWriter(new File("ToDoItems.txt"))) {
String inputLine;
do {
System.out.println("add to the list? [y/n]");
inputLine = keyboard.nextLine();
if ("y".equals(inputLine)) {
System.out.println("enter a to-do using the format 'id,description'");
StringTokenizer tokenizer = new StringTokenizer(keyboard.nextLine(),
",");
String id = tokenizer.nextToken();
String description = tokenizer.nextToken();
list.addItem(new ToDoItem(id, description));
} else {
System.out.println("Here is the list so far:");
System.out.println(list);
}
} while ("y".equals(inputLine));
}
}
}
public class ToDoList {
private ArrayList<ToDoItem> items = new ArrayList<ToDoItem>();
public ToDoList(String fileName) throws FileNotFoundException {
File file = new File(fileName);
Scanner scanner = new Scanner(file);
try {
while (scanner.hasNext()) {
String nextLine = scanner.nextLine();
StringTokenizer tokenizer = new StringTokenizer(nextLine, ",");
String id = tokenizer.nextToken();
String description = tokenizer.nextToken();
items.add(new ToDoItem(id, description));
}
} finally {
scanner.close();
}
}
public void setItems(ArrayList<ToDoItem> newItems) {
this.items.addAll(newItems);
}
public List<ToDoItem> getItems() {
return items;
}
public void addItem(ToDoItem item) {
items.add(item);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ToDoList{");
for (ToDoItem item : items) {
builder.append(item.getId() + "," + item.getDescription() + "\n");
}
builder.append("}");
return builder.toString();
}
}
请注意,这里有很大的改进空间(异常处理、更健壮的文件读取等),但这应该让您开始。您的问题太广泛了-请尝试将其分解并思考您正在尝试做什么。我建议从思考setItems方法要做什么开始,并在这一点上提出一个新问题。这将允许您提供更多详细信息,例如示例文件和方法执行后数组的预期内容。感谢您的回复。我一直在摆弄你的东西。但我有一个问题是它一直在删除文件。你说过会的。但每次我用扫描器阅读时,我都记不起它在删除。你能给我解释一下吗?它会先读取然后删除吗?问题不在于扫描仪。它实际上在main()方法中。PrintWriter上的Javadoc说明:@param file要用作此写入程序目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。所以实际上是PrintWriter杀死了文件,而不是扫描器。