目录
1 实验名称
Java IO
2 实验目的
继续熟练掌握在IDEA中调试代码
掌握File类的基本使用
掌握Java IO中流的基本概念及使用方法
掌握文件IO流、缓冲流使用方法
掌握打开和保存文件的实现
3 实验源代码
ener(myListener);
this.setTitle("文件");//设置窗口标题
//this.setBounds(200,100,500,300);//设置窗口位置和大小
this.pack();
this.setVisible(true);//窗口可见
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置退出窗口并结束程序
}
//菜单项的事件监听器
private class MyListener implements ActionListener{
JFrame jFrame;
public MyListener(JFrame jFrame) {
this.jFrame = jFrame;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == jMenuItems[1]){
readfile(myListener);
}
else {
writerfile(myListener);
}
}
}
//读取文件的方法
private void readfile(MyListener myListener){
int state = jFileChooser.showOpenDialog(myListener.jFrame);
if(state == JFileChooser.APPROVE_OPTION){
jTextArea.setText(null);
File dir = jFileChooser.getCurrentDirectory();//得到用户选择的文件的路径
String filename = jFileChooser.getSelectedFile().getName();//得到文件名
File file = new File(dir,filename);
BufferedReader fis = null;
try {
fis = new BufferedReader(new FileReader(file));
String s = null;
while((s = fis.readLine()) != null){
jTextArea.append(s);
System.out.println(s);
}
JOptionPane.showMessageDialog(myListener.jFrame,"成功打开文件");
} catch (IOException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
finally {
if(fis != null){
try {
fis.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
}
}
//写入文件的方法
private void writerfile(MyListener myListener){
int state = jFileChooser.showSaveDialog(myListener.jFrame);
if(state == JFileChooser.APPROVE_OPTION){
File dir = jFileChooser.getCurrentDirectory();//得到用户选择的文件的路径
String filename = jFileChooser.getSelectedFile().getName();//得到文件名
File file = new File(dir,filename);
BufferedWriter fis = null;
try {
fis = new BufferedWriter(new FileWriter(file,true));
String s = jTextArea.getText();
fis.write(s);
jTextArea.setText(null);
JOptionPane.showMessageDialog(myListener.jFrame,"成功保存文件");
} catch (IOException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
finally {
if(fis != null){
try {
fis.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
}
jFileChooser.showSaveDialog(myListener.jFrame);
}
}
4 实验运行结果图
5 总结
此次实验步骤:首先文件读取,Java中提供了多种文件输入流来进行文件读取操作,比如FileInputStream、BufferedInputStream等等;此次实验中,使用BufferedReader来读取文本文件内容,并对于可能出现的异常进行了处理。其次文件写入,Java中也提供了多种文件输出流来进行文件写入操作,比如FileOutputStream、BufferedOutputStream等等;此次实验中,使用BufferedWriter来向文本文件中写入内容,并对于可能出现的异常进行了处理。然后进行文件拷贝,Java中可以使用字节流或字符流来进行文件拷贝操作,同时也可以使用NIO中的Channel来进行高效的文件拷贝;此次实验中,使用了字节流和字符流来进行文件拷贝,并使用NIO中的Channel来进行高效的文件拷贝。