所以我使用了DataInputStream,FileInputStream,BufferInputStream,FileReader,BufferedReader,Scanner,你可以命名它。它们都抛出FileNOtFoundException或CorruptedStreamException。
例外 java.io.FileNotFoundException:java.io.FileReader@253498.data(系统找不到指定的文件) 在FileReader初始化的行上抛出文件名为“Accounts.txt”的文件,这是我在bin中初始化的文件,其中包含所需的文本。
import java.io.*;
import java.util.ArrayList;
/**
* Class to load account files
*/
public class AccountLoader {
/**
* Add an account file
* @param newAccount
*/
public static void addAcountFile(Account newAccount) {
try {
PrintWriter out = new PrintWriter(new File("Accounts.txt"));
out.print(" " + newAccount.getOwner().getName());
System.out.println("saved account " + newAccount.getOwner().getName());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static ArrayList<Account> loadAccountsList() throws EOFException, IOException, ClassNotFoundException{
ArrayList<Account> accounts = new ArrayList();
FileReader load = new FileReader("Accounts.txt");
String file = load.toString();
String[] accountsload = file.split(" ");
for (String string : accountsload){
accounts.add(loadAccount(string + ".data"));
}
load.close();
return accounts;
}
public static void save(Account account) {
String filename = account.getOwner().getName() + ".data" ;
if (filename != null) {
try {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(account);
out.flush();
out.close();
}
catch (IOException e) { System.out.println(e); }
}
}
public static Account loadAccount(String filename) {
Account newAccount = null;
if (filename != null) {
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
newAccount = (Account)in.readObject();
in.close();
}
catch (Exception e) { System.out.println(e); }
}
return newAccount;
}
}
答案 0 :(得分:1)
您可能需要将文本文件放在“项目根目录”文件夹(包含src
和bin
的文件夹)中,而不是bin
文件夹中。如果您从Eclipse运行它,这肯定是您需要做的,因为从Eclipse运行的Java项目的上下文始终是该项目的Eclipse项目文件夹。
当您要求Java按名称打开文件而不给它路径时,JVM将在其当前工作目录中查找该文件。当前工作目录根据您运行程序的方式而变化,在您的情况下,“bin”文件夹看起来不是您当前的工作目录。
答案 1 :(得分:0)
尝试将文本文件移动到其他文件夹。 bin文件夹中的一个文件夹可能是正确的位置。
答案 2 :(得分:0)
如果您使用的是命令行,请将该文件放在运行java命令的文件夹中,并在CLASSPATH中添加.
set CLASSPATH=%CLASSPATH%;.
然后运行你的java程序。
如果您正在使用eclipse,请尝试将该文件放在项目的根文件夹中,或使用相对于根文件夹的相对路径。