在做一个打开的 文件对话框,选择文件后,想要打开,怎么样才能打开?代码应该怎么样实现?还有保存文件?

解决方案 »

  1.   

    JFileChooser是用来返回文件名称的,打开和保存都要自己实现
      

  2.   

    以前自己写的一个记事本的一部分
    不知道符不符合你的要求
    -----------------
    import ...
    .
    .
    .
    public class NotepadFile
    {
       private Component parent;
       private File file;
       private JFileChooser filechooser=new JFileChooser();
       
       public NotepadFile(final Component parent)
       {
        this.parent = parent;
            filechooser.addChoosableFileFilter(new NotepadFileFilter( "java" ));
            filechooser.addChoosableFileFilter(new NotepadFileFilter( "txt" ));
        }
        
        //取得当前文件对象
        public File getFile(){
         return file;
         }
        
        /*
         *保存文件
         *@param notefile 要保存的文件对象
         *@param data 文件数据
         **/
       public boolean saveFile(File notefile,String data){
           this.file = notefile;
           if(getFile()!=null){        
         try{
            FileWriter fw=new FileWriter(getFile());
            fw.write(data);
            fw.close();
            return true;
             }
        catch(Exception e){
         JOptionPane.showMessageDialog( null ,"保存文件出错:"+e.getMessage(),"错误",JOptionPane.WARNING_MESSAGE);
                 }
          } 
        else{
         return saveAs(getFile(),data);}
         return false;
        }
       
      //----另存为------------------- 
      public boolean saveAs(File notefile,String data)
          { if(notefile==null)
            filechooser.setDialogTitle("保存"); 
            else
            filechooser.setDialogTitle("另存为"); 
           if(JFileChooser.APPROVE_OPTION == filechooser.showSaveDialog( parent )){
              this.file  =  filechooser.getSelectedFile();
              return saveFile(getFile(),data);
            } 
            return false;
        } 
                       
       /*
        *读取文件内容
        *@return 返回文件内容
        **/
      public String openFile(File openfile)
      {   
          String str = null; 
          if(openfile == null){
             if(getFile() != null)
                filechooser.setSelectedFile( getFile() );
             if(JFileChooser.APPROVE_OPTION==filechooser.showOpenDialog( parent ))
                this.file=filechooser.getSelectedFile();
             else
                return null;
        }
        else
        {
         this.file = openfile;
         }
         try{
                int size = (int)getFile().length(),readchar = 0;
                char[] data = new char[size];
                FileReader in = new FileReader(getFile());
                  while( in.ready())
                  readchar = readchar + in.read(data,readchar,size - readchar);
                  in.close();
                  str = new String(data,0,readchar);
                  return str;
                  }catch(Exception e){
                   JOptionPane.showMessageDialog( null ,"打开文件出错:"+e.getMessage(),"错误",JOptionPane.WARNING_MESSAGE);
                   }
     return null;
    }
    //实现FileFilter抽象类
    private class NotepadFileFilter extends FileFilter{
    String str;
    public NotepadFileFilter(String str){
     this.str = str;
        }
        //实现accept方法
        public boolean accept(File file){
         if(file.isDirectory())//是目录时,返回true
         return true;
         String fileName = file.getName();
         int index = fileName.lastIndexOf('.');
           if(index>0&&index<fileName.length()-1){
            String exetension = fileName.substring(index+1).toLowerCase();
            if(exetension.equals(str))
             return true;
            }
            return false;
         }    //实现getDescription方法
        public String getDescription(){//返回描述文件说明的字符串
         if(str.equals("java")){
         return "JAVA文件 (*.java)"; }
         if(str.equals("txt")){
         return "文本文件(*.txt)";
         }
         return "";
           }
      }}