[英]FileNotFoundException error while running java program
我在運行代碼時遇到FileNotFoundException。 我的文件名是filecontent.java ...
定義:我想創建一個具有4個TextField和4個TextAreas的程序。 如果在TextField中鍵入文件名,則其內容應顯示在相應的TextArea中。
錯誤:
異常e:java.io.FileNotFoundException:
我的代碼:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class filecontent extends Frame implements ActionListener
{
TextField t[]=new TextField[4];
TextArea ta[]=new TextArea[4];
Button submit,exit=new Button("Exit");
Panel p1;
filecontent()
{
setGUI();
setRegister();
try{
showfile();
}
catch(IOException ioe)
{
System.out.println("Exception e : "+ioe);
}
setTitle("FileData");
setVisible(true);
setSize(300,300);
setLocation(500,200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent we)
{ System.exit(0); }
});
}
void setGUI()
{
p1=new Panel();
p1.setLayout(new GridLayout(5,4,10,10));
for(int i=0;i<4;i++)
{
t[i]=new TextField(10);
ta[i]=new TextArea();
p1.add(t[i]);
p1.add(ta[i]);
}
submit=new Button("Submit");
p1.add(submit);
p1.add(exit);
}
void setRegister()
{
submit.addActionListener(this);
exit.addActionListener(this);
}
void showfile() throws java.io.IOException
{
FileReader fin[]=new FileReader[4];
FileReader fn=new FileReader("filecontent.java");
BufferedReader br[]=new BufferedReader[4];
for(int i=0;i<4;i++)
{
fin[i]=new FileReader(t[i].getText());
}
int cnt=1;
String s;
fn=fin[0];
br[0]=new BufferedReader(fn);
while(cnt<=4)
{
if((s=br[cnt-1].readLine())!=null)
{
ta[cnt-1].append(s+"");
}
else
{
fin[cnt-1].close();
cnt++;
fn=fin[cnt-1];
br[cnt-1]=new BufferedReader(fn);
ta[cnt-1].setText("");
}
}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==submit)
{
try{
showfile();
}
catch(IOException ioe)
{
System.out.println("Exception e"+ioe);
}
}
else if(ae.getSource()==exit)
{
System.exit(0);
}
}
public static void main(String ar[])
{
new filecontent();
}
}
您沒有NullPointerException。 您有一個FileNotFoundException。 正如此異常的名稱所說,這是因為找不到您嘗試打開的文件。
第一個失敗的文件訪問是:
FileReader fn=new FileReader("filecontent.java");
如果您的Java文件位於項目的src(或任何其他)文件夾中,則必須添加該文件夾。 例如src/filecontent.java
其他注意事項:
t, ta, p1, etc.
可能會造成混淆。 為什么不使用textFields, textAreas, panel
? while(cnt<=4)
這行中遇到ArrayIndexOutOfBoundsException。 數組索引以0開頭,以n-1結束(在您的情況下,= 3) ioe.printStackTrace()
。 這為您提供了代碼失敗的確切行號 您的例外情況可能來自此行
FileReader fn=new FileReader("filecontent.java");
我認為您應該使用完整路徑,而不僅僅是文件名。
首先,為什么不使用FileDialog而不是textField作為文件。 其次,您正在使用相對路徑,因此要使程序正常工作,文件filecontent.java必須與.class文件位於同一位置。
在Java中讀取文件時,文件路徑的語法因系統而異。 因此,您應該根據所使用的操作系統來應用路徑。 同樣,對於您的代碼,文件filecontent.java應該位於同一目錄中。
根據您的評論,答案是該文件在資源管理器中顯示為a.txt
,但實際上是a.txt.txt
在資源a.txt.txt
顯示文件擴展名可以避免此問題/混亂。
使用文件路徑時,它是相對於工作目錄的,即應用程序的運行位置。 找不到源代碼。 如果您不知道工作目錄是什么,則應使用完整路徑名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.