Java 要读取的文件的位置?

Java 要读取的文件的位置?,java,Java,我试图允许java tcp服务器上的用户将所需的连接IP放入文本文件中,但当我要求程序读取我编写的测试文件时,它说找不到该文件。有人能告诉我把文件放在哪里以便项目可以找到它吗?如果有帮助的话,我正在使用netbeans 这是我的密码: package chat; import java.net.*; import java.io.*; import java.awt.*; public class Chat extends Frame { private Socket socket

我试图允许java tcp服务器上的用户将所需的连接IP放入文本文件中,但当我要求程序读取我编写的测试文件时,它说找不到该文件。有人能告诉我把文件放在哪里以便项目可以找到它吗?如果有帮助的话,我正在使用netbeans

这是我的密码:

package chat;

import java.net.*;
import java.io.*;
import java.awt.*;
public class Chat extends Frame {

    private Socket socket = null;
    private DataInputStream console = null;
    private DataInputStream fileStream = null;
    private DataOutputStream streamOut = null;
    private ChatClientThread client = null;
    private TextArea display = new TextArea();
    private TextField input = new TextField();
    private Button send = new Button("Send"),
            connect = new Button("Connect"),
            quit = new Button("Bye"),
            exit = new Button("Exit");
    private String serverName;
    private int serverPort;

    public Chat() {
        Panel keys = new Panel();
        keys.setLayout(new GridLayout(1, 2));
        keys.add(quit);
        keys.add(connect);
        Panel south = new Panel();
        south.setLayout(new BorderLayout());
        south.add("West", keys);
        south.add("Center", input);
        south.add("East", send);
        Label title = new Label("Chat Room", Label.CENTER);
        title.setFont(new Font("Helvetica", Font.BOLD, 14));
        setLayout(new BorderLayout());
        Panel Stuff = new Panel();
        Stuff.add(title);
        Stuff.add(exit);
        add("North", Stuff);
        add("Center", display);
        add("South", south);
        quit.disable();
        send.disable();
        display.setFocusable(false);
        getParameters();

    }



    public boolean action(Event e, Object o) {
        if (e.target == quit) {
            input.setText(".bye");
            send();
            quit.disable();
            send.disable();
            connect.enable();
            exit.enable();
        } else if (e.target == connect) {
            connect(serverName, serverPort);
        } else if (e.target == send) {
            send();
            input.requestFocus();
        } else if (e.target == exit) {
            this.dispose();
        }
        return true;
    }

    public void connect(String serverName, int serverPort) {
        println("Establishing connection. Please wait ...");
        try {
            socket = new Socket(serverName, serverPort);
            println("Connected: " + socket);
            open();
            send.enable();
            connect.disable();
            quit.enable();
            exit.disable();
        } catch (UnknownHostException uhe) {
            println("Host unknown: " + uhe.getMessage());
        } catch (IOException ioe) {
            println("Unexpected exception: " + ioe.getMessage());
        }
    }

    private void send() {
        try {
            streamOut.writeUTF(input.getText());
            streamOut.flush();
            input.setText("");
        } catch (IOException ioe) {
            println("Sending error: " + ioe.getMessage());
            close();
        }
    }

    public void handle(String msg) {
        if (msg.equals(".bye")) {
            println("Good bye.");
            close();
        } else {
            println(msg);
        }
    }

    public void open() {
        try {
            streamOut = new DataOutputStream(socket.getOutputStream());
            client = new ChatClientThread(this, socket);
        } catch (IOException ioe) {
            println("Error opening output stream: " + ioe);
        }
    }

    public void close() {
        try {
            if (streamOut != null) {
                streamOut.close();
            }
            if (socket != null) {
                socket.close();
            }
        } catch (IOException ioe) {
            println("Error closing ...");
        }
        client.close();
        client.stop();
    }

    private void println(String msg) {
        display.appendText(msg + "\n");
    }
    //This is the problem area.
    public void getParameters() {
        try
        {
            FileInputStream dataIn = new FileInputStream("IP.txt");
            int k;
            try {
                while((k = dataIn.read()) != -1) {
                    serverName += (char)k;
                }
                dataIn.close();
            }
            catch(IOException ioe) {
                println("Reading problem.");
            }
            println("Press 'connect' to connect to " + serverName);
        }
        catch (IOException ioe)
        {
            println("Problem finding IP address file.");
        }
        serverPort = 3000;
    }

    public static void main(String[] args) {
        Chat client = new Chat();
        client.setVisible(true);
        client.setSize(400, 300);

    }
}
您的资源文件应该位于
项目类路径
JVM类路径

因为您是从netbeans运行它,所以将它放在项目的
根文件夹下。这应该行得通。您可以右键单击项目并检查
类路径
属性,查看哪些
文件夹/路径
设置为
类路径

在不使用netbeans作为可执行文件独立运行程序时,资源文件应位于从中读取类文件的类文件夹下(作为相对路径),或位于根文件夹中具有绝对路径的根文件夹中


您还可以提及绝对系统路径
(c:\test\..)
,但不推荐使用。

IP.txt位于%APPLICATION%/IP.txt。因此,无论您从何处启动“java”,都可以在执行运行时启动。我已经好几年没有使用Netbeans了,但我想这应该在您项目的“根”文件夹中。您可以尝试删除不相关的gui代码,以便将问题集中在实际问题上。