黑马程序员技术交流社区

标题: [原创]DVD管理系统项目之三--使用io流模拟迷你SQL [打印本页]

作者: 万琪    时间: 2013-6-18 19:33
标题: [原创]DVD管理系统项目之三--使用io流模拟迷你SQL
本帖最后由 Super_Class 于 2013-6-18 20:18 编辑

前言:

没人顶,没加分,没动力啊!!!!!!!!!!!!{:soso_e109:}
这个项目我做起来感觉还是满综合的,,基本覆盖到了java基础的全部内容,,我发帖的思路是由易到难得,,
结合实例帮助新手理解Java编程思想。。全部讲完之后,,我会把源代码和做好的小程序发出来给大家玩,,,,现在主要是把思路给大家!~~







[原创]DVD管理系统项目之一--使用IO流模拟SQL



问题说明:


集合中保存的数据都在内存中,在关闭程序后就消失了,,所以我们用一个TXT文件来保存数据,,

类似于数据库的操作,,,只是简化了,,增删改查,,,,只在必要时,进行数据的交互。

先上图:


上图是文件结构,

我这里推荐用反射来获取相对地址,,你可以试试,,


我的代码如下:
  1. // io入口!!!!!!!!!!!!!!!!!!!!!
  2.                 // 批量导入---添加
  3.                 addall.addActionListener(new ActionListener() {

  4.                         @Override
  5.                         public void actionPerformed(ActionEvent arg0) {
  6.                                 // TODO Auto-generated method stub
  7.                                 JFileChooser jf = new JFileChooser();
  8.                                 jf.showOpenDialog(MiniDVD.this);
  9.                                 try {
  10.                                         File file = jf.getSelectedFile();
  11.                                         FileWriter fw = new FileWriter("DVDsql.txt", true);
  12.                                         FileReader fr = new FileReader(file);
  13.                                         char[] buf = new char[1024];
  14.                                         int num = 0;
  15.                                         while ((num = fr.read(buf)) != -1) {
  16.                                                 fw.write((new String(buf, 0, num)));
  17.                                         }
  18.                                         fr.close();
  19.                                         fw.close();

  20.                                 } catch (FileNotFoundException e) {
  21.                                         // TODO Auto-generated catch block
  22.                                         e.printStackTrace();
  23.                                 } catch (IOException e) {
  24.                                         // TODO Auto-generated catch block
  25.                                         e.printStackTrace();
  26.                                 }

  27.                         }
复制代码
  1. delAll.addActionListener(new ActionListener() {

  2.                         @Override
  3.                         public void actionPerformed(ActionEvent arg0) {
  4.                                 // TODO Auto-generated method stub
  5.                                 try {
  6.                                         FileWriter clean = new FileWriter("DVDsql.txt", false);
  7.                                         clean.write("\r\n");
  8.                                         clean.close();
  9.                                 } catch (IOException e) {
  10.                                         // TODO Auto-generated catch block
  11.                                         e.printStackTrace();
  12.                                 }
  13.                                 labDialog.setText("所有数据已删除!");
  14.                                 d.setVisible(true);
  15.                         }
复制代码
  1. /*
  2.          * io流
  3.          */
  4.         // 读取mysql
  5.         String[] readSQL() throws IOException {
  6.                 String[] str;
  7.                 StringBuffer sb = new StringBuffer();
  8.                 FileReader fileReader = null;
  9.                 fileReader = new FileReader("DVDsql.txt");
  10.                 char[] buf = new char[1024];
  11.                 int num = 0;
  12.                 while ((num = fileReader.read(buf)) != -1) {
  13.                         sb.append(new String(buf, 0, num));
  14.                 }

  15.                 fileReader.close();
  16.                 str = split(sb);
  17.                 return str;
  18.         }

  19.         // 切割器
  20.         String[] split(StringBuffer sb) {
  21.                 return sb.toString().split("\r\n");
  22.         }

  23.         // 保存
  24.         void toSave() {
  25.                 try {
  26.                         FileWriter save = new FileWriter("DVDsql.txt", true);
  27.                         for (DVD eachDVD : myDVD) {
  28.                                 String eachDVDName = eachDVD.getName();
  29.                                 save.write(eachDVDName + "\n");
  30.                         }
  31.                 } catch (IOException e1) {
  32.                         // TODO Auto-generated catch block
  33.                         e1.printStackTrace();
  34.                 }
  35.         }
复制代码



如果你有更好的解决代码,可以和我交流,十分感谢。。。。



另外,下一步要解决的问题:完善的AWT界面。。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2