码迷,mamicode.com
首页 > 其他好文 > 详细

使用Profile文件记录JFileChooser(或者File控件)最新打开的文件路径

时间:2015-01-03 17:21:31      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:profile   记录最近打开路径   jfilechooser   file   源代码   

一、描述

我们使用JFileChooser或者File控件打开Windows系统目录下的文件之后,如何保存我们最近打开的文件路径,使得每次打开文件就能打开最近一次打开的文件目录,而不是每次默认打开C:\Users\Administrator\Documents目录。我们需要使用Profile属性文件来记录最近打开的文件路径,在File控件打开文件前先读取配置文件中的最近文件目录,在打开文件后将路径保存到Profile文件中,在操作完毕点击确定按钮后写入Profile配置文件。

二、源代码

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;


public class CountUserServer{
     public static File chooseFile;
     private static String  latestPath ;
     private static Profile profile;
     private static JFileChooser fileChooser;
     
    public CountUserServer (){
         profile = new Profile();//每次运行程序时创建配置文件Profile对象
         //读取配置文件里的参数Profile并赋值给latestPath,如果配置文件中没有该记录则设置一个默认路径
         latestPath = (profile.read()?profile.latestPath:"D:/KKServer/MainServer/");        
          try{
             
               if(!new File(latestPath).exists()){
                latestPath = "D:/KKServer/MainServer/";   //设置默认的最新路径                
               }
               
                fileChooser = new JFileChooser(latestPath);               
				//过滤.log类型的文件
				FileNameExtensionFilter filter = new FileNameExtensionFilter("Text Files", "log");
				fileChooser.setFileFilter(filter);  
				int returnValue = fileChooser.showOpenDialog(null);
				if (returnValue == fileChooser.APPROVE_OPTION) {
				  chooseFile = fileChooser.getSelectedFile();           
				  latestPath = chooseFile.getParent();//每次退出文件选择器后更新目录Properties
				  profile.write(latestPath);
				  new OnlineCountDialog();
				}
			 }catch(FileNotFoundException e){
            e.printStackTrace();
            
        } 
     }
     
    public static void main(String[] args){
        
       new CountUserServer();
          
    }
}


 class Profile{
       //设置默认的最新路径
       String latestPath = "D:/KKServer/MainServer/";
       //在当前工程目录下创建setLatestPath.properties配置文件
       File file = new File("./setLatestPath.properties"); 
        public Profile(){}
        boolean create(){
         boolean flag = true;  
         if(file!=null){
            File directory = file.getParentFile();  //获得文件的父目录
            if(!directory.exists()){    //父目录不存在时
             flag = directory.mkdirs(); //创建父目录
            }else{                      //存在目录
             if(!file.exists()){//配置文件不存在时
              try {
               flag = file.createNewFile();//创建配置文件
              } catch (IOException e) {
               flag = false;
              }
             }
            }
         }
         return flag;
        }
        /**
         * 读取属性文件中最新打开文件的目录
         * @return 
         */
       public boolean read(){
         Properties properties; //声明属性集
         FileInputStream inputStream = null; //声明文件输入流
         boolean b = true;         //声明boolean返回值
         if(!file.exists()){    //配置文件不存在时
            b = create();         //调用create()方法创建一个配置文件
            if(b) {               //配置文件创建成功后
              b = write(latestPath);//调用write()将latestPath写入配置文件
            }else{
               //创建失败即不存在配置文件时弹出对话框提示错误
               JOptionPane.showConfirmDialog(null, "对不起,不存在配置文件!", "错误",JOptionPane.YES_NO_OPTION,JOptionPane.ERROR_MESSAGE);
            }           
         }else{
            try {
                inputStream = new FileInputStream(file);
                properties = new Properties();
                properties.load(inputStream);//读取属性
                latestPath = properties.getProperty("latestPath");//读取配置参数latestPath的值
                inputStream.close();
            }catch (IOException ex) {
                ex.printStackTrace(); 
                b =  false;
            }
         }
         return b;
        }
       /**
        * 将最新打开文件的目录保存到属性文件中
        * @param latestPath
        * @return 
        */
     public boolean write(String latestPath){  
         this.latestPath = latestPath;
         Properties properties = null;
         FileOutputStream outputStream = null;
         boolean flag = true;
         try {
          outputStream = new FileOutputStream(file);
          properties = new Properties();
          properties.setProperty("latestPath",latestPath); 
          properties.store(outputStream,null); //将属性写入  
          outputStream.flush();
          outputStream.close();
         }catch (IOException ioe) {
          flag = false;
          ioe.printStackTrace();
         }
         return flag;
    }
}

三、总结

1、每次打开File控件或者JFileChooser时先读取Profile文件中的路径信息,如果存在就读取,如果不存在就设置一个默认的路径;

2、选择某个文件后就将新的文件路径写入Profile文件,以便下次读取。


使用Profile文件记录JFileChooser(或者File控件)最新打开的文件路径

标签:profile   记录最近打开路径   jfilechooser   file   源代码   

原文地址:http://blog.csdn.net/tongyuehong137/article/details/42364685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!