0

問題がどこから発生しているのかわかりません。testFriends クラスと GUIapp クラスという 2 つのクラスがあります。各クラスで、私の目的はファイルをインポートして使用することです。testFriends クラスでは、メイン メソッドでファイルをインポートすると、ファイルが解析され、すべてがうまく機能します。GUIapp クラスで同じことを試みましたが、コンストラクター メソッドにインポートすると、ファイルが存在しないことがわかります。両方のファイル クラスが同じ src フォルダーに存在し、私は以下を使用しています。

BufferedReader in = new BufferedReader(new FileReader(inputFile));

ここで、inputFile は単なる文字列 "friends.txt" です。

以下に 2 つのクラスを示します。

//This class works

public class temp {

public static void main(String[] args) throws ParseException {
    try {
        System.out.println("hey");
        BufferedReader in = new BufferedReader(new FileReader("friends.txt"));  //create string buffer for reading
        String line = in.readLine(); //reading first line
        System.out.println(line);
    } catch (IOException e) {
        System.out.println("Fail Import.");
    }

}

}


//////////The one below doesn't...

public class GUIapp extends JApplet{
//** PANEL **//
private JPanel outerPanel;

//** Button **//
private JButton button1;


/*
 * Constructor for Getting all the friends set up
 */
public GUIapp() throws ParseException, FileNotFoundException{
    BufferedReader in = new BufferedReader(new FileReader("friends.txt"));//Error Line

}

/*
 * Create Stuff
 */
public void createStuff() {
    outerPanel = new JPanel(); //create outer panel
    button1 = new JButton("Click Me");
    outerPanel.add(button1,BorderLayout.SOUTH);
}


/*
 * Initialize Stuff
 */
public void init(){
    createStuff(); //initialize create stuff
    this.add (outerPanel); 
}


}

両方が同じディレクトリで作業しているときに、一方が読めるのに他方が読めないのはなぜですか?

ありがとう、

編集: 以下は、GUIapp クラスを実行したときにスローされる例外です。

java.io.FileNotFoundException: friends.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at java.io.FileReader.<init>(FileReader.java:41)
at GUIapp.<init>(GUIapp.java:50)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:807)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
at sun.applet.AppletPanel.run(AppletPanel.java:368)
at java.lang.Thread.run(Thread.java:680)
4

1 に答える 1

1

実行時に、アプレットには探しているファイルがありません。実行時にファイルが存在することを確認してください。

ファイルを取得できるように、このメソッドをコードに追加してください

public void readFile(String fileToRead){
  String line;
  URL url = null;
  try{
  url = new URL(getCodeBase(), fileToRead);
  }
  catch(MalformedURLException e){}

  try{
  InputStream in = url.openStream();
  BufferedReader bf = new BufferedReader(new InputStreamReader(in));

  // your business logic here
  }
  catch(IOException e){
  e.printStackTrace();
  }
 }

/* * すべてのフレンドをセットアップするためのコンストラクター */

public GUIapp() throws ParseException, FileNotFoundException{
    readFile("friends.txt")
}

詳細については、Javase のこの画像を参照してください ここに画像の説明を入力

imgDir の下にある a.gif イメージ ファイルを使用する Image オブジェクトを作成するには、アプレットで次のコードを使用します。

Image image = getImage(getCodeBase(), "imgDir/a.gif");
于 2013-02-15T22:13:11.600 に答える