有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的OpenFile对话框将null作为响应

我尝试了几种方法来打开一个文本文件,我的程序使用它在地图创建者中显示地图。除了我选择一个文本文件,我会得到“null”作为字符串外,其他一切都正常工作。我不知道它是如何变为null的,因为文件存在(在加载之前我检查了它)

以下是两次尝试的2个代码块:

public String OpenText(){
    String str = null;

    JFileChooser fc = new JFileChooser();

    int returnVal = fc.showOpenDialog(null);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
        System.out.println("Opening: " + file.getName() + ". " + "Path: "+file.getPath());
        if(new File(file.getPath()).exists()){
            try {
                System.out.println("File Exists.");
                /*FileReader fr = new FileReader(file);
                BufferedReader br = new BufferedReader(fr);

                StringBuilder sb = new StringBuilder();
                while((str = br.readLine())!= null){
                    sb.append(str);
                }
                */
                StringBuilder sb = new StringBuilder();
                Scanner input = new Scanner(file);
                while(input.hasNext()){
                    sb.append(input.nextLine());
                    sb.append("\n");
                }


            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    } else {
        System.out.println("Open command cancelled by user.");
    }
    System.out.println(str);
    return str;
}

代码在第一次尝试和第二次尝试时都返回“null”

我知道第一个代码是有效的,因为我用它来保存我的设置。但我也用扫描仪试过了

额外信息:我试图打开的文件中有文本。我尝试了不同的文本文件


共 (1) 个答案

  1. # 1 楼答案

    我在关注你的情况
    我尝试了以下方法,它可以与文本文件(txt)一起使用

     StringBuilder sb = new StringBuilder();
     Scanner input = new Scanner(file);
     while(input.hasNext()){
        sb.append(input.nextLine());
        sb.append("\n");
        }
     str = sb.toString(); <  Did you miss it?