簡體   English   中英

運行Java程序時出現FileNotFoundException錯誤

[英]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

其他注意事項:

  • 按照慣例,Java類名稱以大寫字母開頭
  • 您的變量名t, ta, p1, etc.可能會造成混淆。 為什么不使用textFields, textAreas, panel
  • 我認為您將在while(cnt<=4)這行中遇到ArrayIndexOutOfBoundsException。 數組索引以0開頭,以n-1結束(在您的情況下,= 3)
  • 它可以幫助調試以打印出catch塊中的stacktrace: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM