1、对思考分析题能进行正确的实验验证,正确率70以上。对思考分析题有实验验证,正确率60以下。实验总结(20)对相关技术重点难点问题解决能够深刻领会,举一反三,感受真实。对相关技术重点难点问题解决能够领会,感受真实。对相关技术重点难点问题认识模糊,感受不真实。报告格式格式规范,组成部分完整,内容充实。格式规范,组成部分完整。格式不规范,组成部分不完整。实验成绩 指导教师(签名) 年 月 日说明:指导教师评分后,实验报告交院(系)办公室保存。实验项目二 JAVA异常处理及输入输出流技术实验文本编辑器一、实验目的1、理解和掌握字节流的类以及它们的使用特点;2、理解和区分字节流和字符流;3、了解和运用字
2、节流和字符流进行文件复制;4、理解和掌握Java Swing组件的使用方法。2、实验内容设计一个简单的文本编辑器,可以实现多文件处理、实现文件的创建、浏览、编辑(允许文本复制、修改、删除)、对已经修改的文件进行保存或以另外文件名称保存。三、实验原理1、Java Swing组件技术原理;2、Java AWT 事件处理原理;3、Java流技术原理。四、实验环境电脑主机酷睿i5、内存4G以上,操作系统Windows 7以上,开发工具Myeclipse 2015。五、实验步骤1、创建一个TextEditor项目。图1创建一个TextEditor项目截图2、创建一个TextEditor包图2 创建一个T
3、extEditor包截图3、创建一个TextEditor类图3 创建一个TextEditor类截图4、填空空白代码,放入所在类进行点击调试并运行程序。六、实验结果图4 运行结果图5 新建文件图6 保存文件图7 打开文件图8 输入图9 再次打开图11 缩小图12 打开图13 帮助七、实验分析7.1程序中SaveFileListener类和OtherSaveFileListener,他们都有处理保存文件的功能,但SaveFileListener对已经保存文件的会直接保存,而OtherSaveFileListener每次都会重新打开窗口保存文件,并要重新输入文件名。7.2在OtherSaveFile
4、Listener类中的actionPerformed()方法中有语句:output=new BufferedWriter(new FileWriter(fileName);如果将该语句改写成:output=newBufferedWriter (newFileWriter (filename,true); 程序是否可以正常运行,如果不能正常运行,但改为:output=new BufferedWriter(new FileWriter (fileName,true);可以正常运行,文件名错了。newFileWriter(fileName)在给出文件名的情况下构造一个FileWriter 对象。ne
5、w FileWriter(fileName,true)在给出文件名的情况下构造FileWriter对象,它具有指示是否挂起写入数据的boolean值。7.3在定义OtherSaveFileListener类的actionPerformed()方法中,采用了字符缓冲读写器(BufferedReader和BufferedWriter)来实现文件数据的读和写。如果在该方法中改用字符缓冲输入和输出流BufferedInputstream和BufferedOutputstream来实现文件数据的读和写,语句可以为:Input = new BufferedInPutstream(new File (cur
6、rentfile);output = new BufferedoutPutstream(new File (fileName);7.4 如果程序中没有定义BufferedReader和BufferedWriter字符缓冲读写器,不可以通过FileReader和FileWriter文件读写器直接实现文件的读取和写入。程序中字符缓冲读写器的作用是将外设送来的数据暂时以字符形式存放,以便处理器将它取走,提高程序的速度。7.5程序开头的import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import ja
7、va.awt.*; import java.io.*; import javax.swing.text.Document;即为导入对应的java包, 其中*代表awt下的所有内容;import javax.swing.*; 是导入java界面类;import javax.swing.event.*; 为导入swing下event的全部内容;import java.awt.*; 导入旧的java界面类;import java.awt.event.*;导入java的事件类;import javax.swing.text.Document;表示导入swing下text内的document的内容。八、
8、 实验结论通过本实验,我对一个简单的文本编辑器实现,可以实现多文件处理、实现文件的创建、浏览、编辑(允许文本复制、修改、删除)、对已经修改的文件进行保存或以另外文件名称保存。理解和掌握了字节流的类以及它们的使用特点、理解和区分字节流和字符流、了解和运用字节流和字符流进行文件复制。字符流类字符流和字节流类字节流的区别。更加深刻地认识到Java语言中,对于文件内容的操作主要分为两大类,分别是:字符流和字节流。其中,字符流有两个抽象类:Writer和Reader,其对应子类FileWriter和FileReader可实现文件的读写操作。BufferedWriter和BufferedReader能够提
9、供缓冲区功能,用以提高效率。同样,字节流也有两个抽象类:InputStream和OutputStream。其对应子类有FileInputStream和FileOutputStream实现文件读写。BufferedInputStream和BufferedOutputStream提供缓冲区功能。抽象类java.io.Reader和java.io.Writer是基于字符的数据流的父类。类Reader是输入字符流,Writer是输出字符流,它们可以处理16位的字符。它们的子类以及相应的继承关系根据功能可以分成两个类别:一个是只处理读取和写入的类;另一个是执行其他处理的类。同样在Java语言中,字节流有
10、两大基本类:抽象类java.io.InputStream和java.io.OutputStream,它们是所有基于字节的数据流类的父类。类InputStream是输入字节流,OutputStream是输出字节流,它们则处理8位的字节数据。一个是只处理读取和写入的类另一个是可以执行其他处理的类。在这次实验中填写代码的过程中,经常会出现错误,原因是大小写软件不能识别。比如:output = new BufferedWriter(new FileWriter(filename, true); 这句就会报错。但如果修改成为output = new BufferedWriter(new FileWrit
11、er(fileName, true);就不会报错了,有时候良好的编写代码的习惯也可以避免浪费很多时间,我觉得这当中做浪费时间的就是不断地调试程序,修正代码。在TextEditor类里输入代码,并补充填写代码17: 代码1:result =filechooser.showOpenDialog(currentFrame); /按照文件打开对话框模式选择文件 代码2:result=filechooser.showSaveDialog(currentFrame); /按照文件保存对话框模式选择文件 代码3:File fileName=filechooser.getSelectedFile(); /从对
12、话框中选择文件,赋值给fileName; 代码4:BufferedWriter input=new BufferedWriter(new FileWriter (fileName); /; 代码5:BufferedReader output=new BufferedReader(new FileReader (fileName); 代码6:while(text=output.readLine()!=null)/依次访问文件的每一行; / 代码7:output.close(); /关闭字符缓冲流output;源程序:package TextEditor;import java.io.*;publ
13、ic class TextEditor extends JFrameJDesktopPane desktopPane;/定义菜单组件JMenuBar menuBar;JMenu fileMenu,helpMenu;/定义文件菜单、帮助菜单JMenuItem newItem,openItem,saveItem,othersaveItem,closeItem,exitItem;/定义文件菜单的:新建菜单项、打开菜单项、保存菜单项、另存菜单项、关闭菜单项、/退出菜单项JMenuItem aboutItem;/定义帮助菜单的:关于菜单项StringBuffer buffer=new StringBuf
14、fer();/定义一个字符串缓冲区;File currentFile;/当前处理的文件;int status;/记录当前状态0:新建、1:打开、2:保存、3:另存;4:关闭;DisplayFrame currentFrame;/当前打开的窗口public TextEditor() super(文本编辑器);Container container=getContentPane();desktopPane=new JDesktopPane();container.add(desktopPane);createMenu();setJMenuBar(menuBar);public void creat
15、eMenu()/定义菜单条;menuBar=new JMenuBar();/定义文件菜单fileMenu=new JMenu(文件新建菜单项、打开菜单项、保存菜单项、另存菜单项、关闭菜单/退出菜单项/定义新建菜单项newItem=new JMenuItem(新建newItem.addActionListener(new NewFileListener();/定义打开菜单项openItem=new JMenuItem(打开openItem.addActionListener(new OpenFileListener();saveItem=new JMenuItem(保存saveItem.addA
16、ctionListener(new SaveFileListener();othersaveItem=new JMenuItem(另存为othersaveItem.addActionListener(new OtherSaveFileListener();closeItem=new JMenuItem(关闭closeItem.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)if(e.getSource()=closeItem)currentFrame.dispose(););exit
17、Item=new JMenuItem(退出exitItem.addActionListener(new ActionListener()System.exit(0);/添加菜单项到文件菜单中;fileMenu.add(newItem);fileMenu.add(openItem);fileMenu.addSeparator();fileMenu.add(saveItem);fileMenu.add(othersaveItem);fileMenu.add(closeItem);fileMenu.add(exitItem);/定义帮助菜单helpMenu=new JMenu(帮助aboutItem
18、=new JMenuItem(关于aboutItem.addActionListener(new ActionListener()if(e.getSource()=aboutItem)JOptionPane.showMessageDialog(null,TextEditor 1.1,版本,JOptionPane.INFORMATION_MESSAGE);/添加菜单项到帮助菜单中;helpMenu.add(aboutItem);/将文件菜单和帮助菜单加入到菜单条中;menuBar.add(fileMenu);menuBar.add(helpMenu);/end createMenu method
19、;public File chooseFile(int chooseMode)/从选择文件对话框中选择文件,chooseMode为选择模式/1:为文件打开对话框模式,2:为文件保存对话框模式;JFileChooser filechooser=new JFileChooser();filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);int result=0;switch(chooseMode)case 1:result = filechooser.OPEN_DIALOG;result = filechooser.showOpenDi
20、alog(this);/按照文件打开对话框模式选择文件break;case 2:result= filechooser.SAVE_DIALOG;result = filechooser.showSaveDialog(this);/按照文件保存对话框模式选择文件if(result=filechooser.CANCEL_OPTION) return null;/从对话框中选择文件,赋值给fileName;return fileName;/返回选定的文件;public void saveFile(File file,int saveMode) throws IOException/保存文件fileN
21、ame,saveMode是保存文件模式:新建文件的保存;2:将修改的已有文件保存;File fileName=null;switch(saveMode)case 0:fileName=chooseFile(2);if(fileName.createNewFile()!=true) return;fileName=file;default:return;currentFile=fileName;if(fileName.exists()!/文件不存在,则返回;BufferedWriter input=new BufferedWriter(new OutputStreamWriter(new Fil
22、eOutputStream(fileName);/将文件fileName写入到字符缓冲写入器input中;input.write(buffer.toString(),0,buffer.length()-1);/将buffer字符串写入到字符缓冲写入器input中System.err.println(buffer.length();if(input!=null)input.close();status=1;public void showFile(File fileName,DisplayFrame contentFrame)/将指定文件fileName的内容在窗口contentFrame内显示
23、出来。try/将文件fileName读到字符缓冲读取器output中;String text;buffer=new StringBuffer();buffer.append(text+n/将每一行添加到buffer中;contentFrame.displayArea.setText(buffer.toString();/将buffer的字符串在contentFrame窗口中显示出来;contentFrame.setTitle(fileName.getName();/改变窗口的标题;/关闭字符缓冲流output;catch(IOException ex)错误发生!catch(NullPointe
24、rException ex3)警告!public static void main(String args) TextEditor texteditor = new TextEditor();texteditor.setSize(400,300);texteditor.setVisible(true);texteditor.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/end mainclass NewFileListener implements ActionListenerpublic void actionPerformed(Action
25、Event e)/新建DisplayFrame txtFrame=new DisplayFrame();currentFrame=txtFrame;txtFrame.setTitle(新建文件desktopPane.add(txtFrame);status=0;/end class newFileListener;class OpenFileListener implements ActionListenerpublic void actionPerformed(ActionEvent e)/打开文件监视接口;File fileName=chooseFile(1);/打开模式打开文件;if(f
26、ileName.exists()DisplayFrame contentFrame=new DisplayFrame();currentFrame=contentFrame;desktopPane.add(contentFrame);showFile(fileName,contentFrame);/end ifcatch(Exception ex)/end actionPerformed/end class openFileListener;class SaveFileListener implements ActionListenerpublic void actionPerformed(ActionEvent e)/保存处理if (e.getSource() = saveItem) try saveFile(currentFile, status);catch (IOException ex) JOptionPane.showMessageDialog(null, 保存文件失败!catch(Exception ex) /end clas
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1