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