Java 扫描仪没有';无法从文件中读取

Java 扫描仪没有';无法从文件中读取,java,java.util.scanner,Java,Java.util.scanner,我正在写程序,它将被读取文件,由用户选择。我有密码: public class program extends javax.swing.JFrame { private String textEncode; ... private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fch = new J

我正在写程序,它将被读取文件,由用户选择。我有密码:

public class program extends javax.swing.JFrame {

private String textEncode;
...

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser fch = new JFileChooser();
    int choose = fch.showOpenDialog(this);
    if(choose == JFileChooser.APPROVE_OPTION) {
        String help = fch.getSelectedFile().getPath();
        jTextField2.setText(help);
        try {
            Scanner in = new Scanner(new File(help));
            while(in.hasNextLine()) {
            textEncode = in.nextLine();
            }
        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(this, "Nie znaleziono pliku", "Błąd wczytywania", JOptionPane.ERROR_MESSAGE);
        }
    }
    jTextArea1.setText(textEncode);
    System.out.println(textEncode);
}
我的文件有一行文本。当程序结束读取文件时,变量textEncode的值为“null”。问题在哪里? 我尝试了.next()中的
和.hasNext()中的
,但都不起作用。

我找到了一个解决方案:

public class program extends javax.swing.JFrame {

private String textEncode;
...

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser fch = new JFileChooser();
    int choose = fch.showOpenDialog(this);
    if(choose == JFileChooser.APPROVE_OPTION) {
        String help = fch.getSelectedFile().getPath();
        jTextField2.setText(help);
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(help), "UTF-8"));
            String line;
            String readed = "";
            while((line = in.readLine()) != null) {
                readed = readed + line + "\n";
            }
            jTextArea1.setText(readed);
        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(this, "Nie znaleziono pliku", "Błąd wczytywania", JOptionPane.ERROR_MESSAGE);
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(aes.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(aes.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
但是现在我对显示jTextArea1有问题。加载文件后,文本区域将调整大小,如下所示:
TextArea被添加到jScrollPane中。

我也有同样的问题,我花了一段时间才解决

我的问题是,我的文件包含法语特殊字符,如“é”。 这导致scanner为scanner.nextLine()返回“null”,而不会导致任何异常,无论文件有多长,也不管特殊字符放置在何处


为了解决这个问题,我刚刚删除了所有特殊字符。如果有人有办法让扫描仪读取特殊字符,欢迎他在下面发表评论。

你有什么例外吗?没有。我没有例外mm。。。您尝试过使用FileInputStream吗?。是用于从文件中读取数据的特定类。我知道scanner类在使用同一对象在同一执行中读取int(nextInt)和string(nextLine)时存在一些问题。不知道它是否相关。我没有尝试使用FileInputStream,因为我想从文件读取到字符串。但是我想,我需要检查一下这个。你是否在(in.hasNextLine())
时进入
块?