当前位置: 代码迷 >> J2SE >> 关于文件读入的有关问题
  详细解决方案

关于文件读入的有关问题

热度:58   发布时间:2016-04-23 20:44:59.0
关于文件读入的问题
做了个小练习,原本是主要关于散列映射的查询练习,全部写完后,没有编译错误,但是运行结果与实际不符,感觉是word.txt文档内容根本没有读入进去。求大神指教,源代码如下:

package 英语单词查询;
public class example {
public static void main(String[] args) {
WindowWord win=new WindowWord();
win.setTitle("英汉小词典");

}

}



package 英语单词查询;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WindowWord extends JFrame {
JLabel english=new JLabel("英语");
JLabel chinese=new JLabel("汉语");
JTextField englishText=new JTextField(20);
JTextField chineseText=new JTextField(20);
JPanel englishPanel=new JPanel();
JPanel chinesePanel=new JPanel();
WordPolice listener;
WindowWord(){
englishPanel.setLayout(new FlowLayout());
chinesePanel.setLayout(new FlowLayout());
englishPanel.add(english);
englishPanel.add(englishText);
chinesePanel.add(chinese);
chinesePanel.add(chineseText);
this.setLayout(new FlowLayout());
this.add(englishPanel);
this.add(chinesePanel);
listener=new WordPolice();
listener.setJTextField(chineseText);
englishText.addActionListener(listener);
this.setBounds(100,100,400,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}



package 英语单词查询;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class WordPolice implements ActionListener {
JTextField chineseText;
HashMap<String, String> hashmap;
File file=new File("word.txt");
Scanner sca = null;
WordPolice() {
hashmap = new HashMap<String, String>();
try {
sca = new Scanner(file);
while (sca.hasNext()) {
String englishWord = sca.next();
String chineseWord = sca.next();
hashmap.put(englishWord, chineseWord);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "读入错误", "**信息提示**",
JFrame.EXIT_ON_CLOSE);
}
}

public void setJTextField(JTextField chineseText) {
this.chineseText = chineseText;
}

public void actionPerformed(ActionEvent e) {
String englishWord = e.getActionCommand();
if (hashmap.containsKey(englishWord)) {
String chineseWord = hashmap.get(englishWord);
chineseText.setText(chineseWord);
} else {
chineseText.setText("没有该单词");
}

}

}

运行的结果是先弹出了那个错误信息提示,“读入错误”,不知道File 这个类使用是否正确,或着这个word.txt文档应该放在什么位置?文档的内容是英语单词然后空格然后对应的汉语意思。请指教
------解决方案--------------------
 你这个word.txt应该放在你项目的根路径下的。
------解决方案--------------------
使用一下绝对路径试试程序能不能跑动。
可以跑动的话,在路径这块,你可以单独分一个方法出来,来设置这个路径。 

------解决方案--------------------
txt文件应该要放在项目里面
------解决方案--------------------
先确定异常时FileNotFoundException或IoException,文件路径你先搞清楚
  相关解决方案