java文件读取异常_关于Java:从文本文件读取会引发异常
因此,我使用了DataInputStream,FileInputStream,BufferInputStream,FileReader,BufferedReader,Scanner,將其命名。 它們都拋出FileNOtFoundException或CorruptedStreamException。
例外
java.io.FileNotFoundException:java.io.FileReader@253498.data(系統找不到指定的文件)
會在文件讀取器使用文件名" Accounts.txt"初始化的行上引發,這是我已經初始化的文件,位于文件箱中,其中包含所需的文本。
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 loadAccountsList() throws EOFException, IOException, ClassNotFoundException{
ArrayList 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;
}
}
您是否正在使用命令行運行?
我99%的人確保您不會在正確的位置(用戶目錄)中查找文件,就像99%的人經常問同樣的問題一樣(如果我每次都有四分之一...)。 通過運行以下行找到用戶目錄:System.out.println(System.getProperty("user.dir"));
@HovercraftFullOfEels如果我每次都對你有四分之一的話...
幾率! (據您估計,為1%)實際上位于與System.out.println(System.getProperty(" user.dir"))相同的文件夾中; 打印。 但這就是我不告訴你的錯。
您可能需要將文本文件放在"項目根目錄"文件夾(包含src和bin的文件夾)中,而不是在bin文件夾中。如果您是從Eclipse運行的,那肯定是您需要做的,因為從Eclipse運行的Java項目的上下文始終是該項目的Eclipse項目文件夾。
當您要求Java按名稱打開文件而不提供路徑時,JVM將在其當前工作目錄中查找文件。當前的工作目錄會根據您運行程序的方式而變化,在這種情況下,看起來" bin"文件夾不是您的當前工??作目錄。
實際上,它位于項目的根文件夾中。 我的錯。
如果使用命令行,請將文件放在運行Java命令的文件夾中,并在CLASSPATH中添加.為
set CLASSPATH=%CLASSPATH%;.
然后運行您的Java程序。
如果使用的是eclipse,請嘗試將文件放在項目的根文件夾中,或使用相對于根文件夾的相對路徑。
我正在使用eclipse,文件位于根文件夾中。
" root"文件夾是指項目文件夾,而不是" src"或" JavaSource"。 是否在項目文件夾(src文件夾的父文件夾)中?
是。 并且無論如何該文件夾都保存在此類的首位,因此工作目錄必須相同,對嗎?
Eclipse將工作目錄視為項目根文件夾,而不是存在" .class"文件的文件夾。 我有很多工作示例,其中將文件放在我的項目文件夾中,例如 Java文件位于" TestJava / JavaSource / com / test / concept /"文件夾中時," TestJava"正常運行,沒有任何問題。
@ user1253476-我有個主意。 嘗試創建文件,例如 output.txt使用FileWriter并檢查要創建的文件的位置。 我很確定,您用來讀取文件的文件會有所不同。
嘗試將文本文件移動到其他文件夾。 bin文件夾中的一個文件夾可能是正確的位置。
糟糕,我撒謊了。 將其從文件夾中移出文件夾。
總結
以上是生活随笔為你收集整理的java文件读取异常_关于Java:从文本文件读取会引发异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python string模块templ
- 下一篇: php 获取文件后缀_php获取文件后缀