所以我使用了DataInputStream、FileInputStream、BufferInputStream、FileReader、BufferedReader、Scanner。它们都抛出FileNOtFoundException或CorruptedStreamException。
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;
}
}
您可能需要将文本文件放在“Project Root”文件夹(包含src
和bin
的文件夹)中,而不是bin
文件夹中。如果您是从Eclipse运行这一点,那肯定是您需要做的,因为从Eclipse运行的Java项目的上下文始终是该项目的Eclipse project文件夹。
当您要求Java按名称打开一个文件而不给它路径时,JVM将在其当前工作目录中查找该文件。当前的工作目录根据您运行程序的方式而改变,在您的情况下,看起来“bin”文件夹不是您当前的工作目录。
可以使用FileReader直接读取文本文件 我们为什么需要使用InputStream方法
我试图通过创建一个函数来编写一个简单的文本文件阅读器,该函数接受文件的路径并将每行文本转换为char数组,但它不起作用。 这里出了什么问题? 从以前的修订版更改了一点代码后,这似乎仍然不起作用,现在它给我一个异常101。 我在Firefox上测试过这个功能,它可以工作,但在Google Chrome上它就是不工作,它一直给我一个异常101。我如何让它不仅适用于Firefox,还适用于其他浏览器(尤
问题内容: 我想读取不同块的日志文件,以使其成为多线程。该应用程序将在具有多个硬盘的服务器端环境中运行。读取成块后,应用程序将处理每个块的每一行。 我已经用bufferedreader完成了对每个文件行的读取,并且可以通过将RandomAccessFile与MappedByteBuffer结合使用来制作文件块,但是将这两者结合起来并不容易。 问题在于该块正好切入我块的最后一行。我从来没有块的最后一
问题内容: 我如何阅读像android app中的文本文件: 所以我可以返回一个字符串,如: 我想到的是(伪代码): 问题答案: 试试这个
问题内容: 我在使用BufferedReader时遇到问题 我想打印一个文本文件的6行: 现在,从每次调用readLine()方法可以收集到的信息开始,它都会自动前进到下一行。 所以我不能使用条件br.readLine()!= null,因为它已经将其前进了一行,并且我得到了输出: 我使用什么条件来检查文本字段中是否还有新行。 提前致谢! 问题答案: 这就是问题: 您有两次调用-第一个 仅 检查是