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())
时进入块?