在自己扫雷程序中写了一个当赢了的时候执行的方法,
目的是提示一个对话框,说你赢了,时间多少[实现已经]
[未实现]之后再判断result.txt中的数据,
如果当中数据少于10行则要求输入name.
并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
如果数据等于10行,则删掉time最大的那行,并按照time从小到大的顺序将name+","+time+";"+"\n"插入适当的位置;
===========================
刚刚接触JAVA的文件操作,我自己已经实现的那部分写入操作还是baidu好久才会的;
还有个问题就是try和catch是干嘛的啊?处理异常的吗?
=============以下方法的源代码==============public void result(int time){
   try{
    BufferedReader bin=null;    BufferedWriter bout=null;    File resultFile = new File("result.txt"); 
    if( ! resultFile. exists() ){ 
resultFile.createNewFile(); 
return;

    }
    FileReader in = new FileReader(resultFile); 
    FileWriter out = new FileWriter(resultFile,true);
    bin=new BufferedReader(in);
    bout=new BufferedWriter(out);
    JTextField nameField = new JTextField("MagicWolf");
    JTextField info2Field = new JTextField();
    JTextField name2Field = new JTextField("大名:");
    name2Field.setEditable(false);
    info2Field.setEditable(false);
    info2Field.setText("你赢了!时间:"+Integer.toString(time));
   
     JPanel panel4 = new JPanel();
      panel4.setLayout(new BorderLayout());
      panel4.add(nameField,BorderLayout.CENTER);
      panel4.add(info2Field,BorderLayout.NORTH);
      panel4.add(name2Field,BorderLayout.WEST);
     JOptionPane.showMessageDialog(panel,panel4);
     String name;
     name = nameField.getText();
     bout.write(name+","+time+";"+"\n");
     bout.flush();     in.close();
     out.close();
     }
catch(IOException ee){}     }

解决方案 »

  1.   

    try catch 是异常处理的 因为文件操作可能会抛出异常
      

  2.   

    赫赫,基本上这是一个比较麻烦的问题。基本思路如下,首先读取filename文件到string数组,可用类BufferReader,FileReader如果文件不存在File.exists,不做读入处理如果文件存在读取失败,并且filename_bak存在,将filename_bak改名filename并且读入关闭输入数据流加入最新纪录解析string数组取得time排序如存在删除旧filename_bak文件File.delete生成新filename_bak文件删除filename文件做成filename文件,FileWriter删除filename_bak文件以上try catch是处理异常的,你这里肯定会遇到的是IO异常,在读写文件的时候
      

  3.   

    去sun 下载一个java doc。就是API说明
      

  4.   

    bluesmile979(笑着)  大哥说的很清除了
    在JAVA中处理文件会抛异常的。所以要用try-catch来进行对这段代码的监听。
      

  5.   

    try catch不用说了,无非就是文件损坏,文件不存在等等的异常捕获
    至于你的result.txt可以将文件以行的读出来,排序,当成db 来操作,这样用随机读写文件的类来插到符合条件的行,然后删除最后1行
      

  6.   

    String stringCut(String s){
       int i = 0;
       String s1;
       String reStr = "";
       char[] tempChar= s.toCharArray();
       while(tempChar[i]!=',') {
       reStr += tempChar[i];
       i++; 
        }
     return reStr;
     }
        public void result(int time){
         try{
            BufferedReader bin=null;            BufferedWriter bout=null;     File resultFile = new File("result.txt"); 
        if( ! resultFile. exists() ){ 
    resultFile.createNewFile(); 
    return;

    }
    FileReader in = new FileReader(resultFile); 
    FileWriter out = new FileWriter(resultFile,true);
       
    bin=new BufferedReader(in);
    bout=new BufferedWriter(out);
       
    JTextField nameField = new JTextField();
    JTextField info2Field = new JTextField();
       
       
    info2Field.setEditable(false);
    info2Field.setText("你赢了!时间:"+Integer.toString(time));
       
             JPanel panel4 = new JPanel();
             panel4.setLayout(new BorderLayout());
             panel4.add(nameField,BorderLayout.CENTER);    
       
    int timeIndex=-1;
    String readline[] = {null,null,null,null,null,null,null,null,null,null};
    for(int i = 0;i<10;i++){
     readline[i] = bin.readLine();
    if(readline[i]==null)
        break;
       
    }
      
      
    int times[]= new int[10];

    for(int i =0;i<10;i++){
    String str;
    str = stringCut(readline[i]);
    times[i]=Integer.parseInt(str);
    if(time < times[i])
    {timeIndex=i;break;}
    }
       
            if(timeIndex==-1){
           nameField.setText("很遗憾,未进英雄榜!");
            nameField.setEditable(false);
             JOptionPane.showMessageDialog(panel,panel4);
           }
    else {
    nameField.setText("MagicWolf");
    JTextField name2Field = new JTextField("大名:");
    name2Field.setEditable(false);
    panel4.add(info2Field,BorderLayout.NORTH);
             panel4.add(name2Field,BorderLayout.WEST);
    JOptionPane.showMessageDialog(panel,panel4); String name;
    name = nameField.getText();
    for(int i=0;i<timeIndex;i++){
    bout.write(readline[i]+"\n");
    } bout.write(time+","+name+";"+"\n");
       
    for(int i= timeIndex;i<10;i++){
    bout.write(readline[i]+"\n");
    }
    bout.flush();    
    in.close();            out.close();
                }
     }
    catch(IOException ee){}    }
    ==========为了实现该方法,我把它改成上面的=================
    可以通过编译,
    但是执行result(time);的时候没啥反映...
    应该很多地方错了..大虾们帮帮纠正下上面的代码
      

  7.   

    当应用程序试图在需要对象的地方使用 null 时,抛出该异常。
    楼上我修改的代码有这个问题...