使用Java中的首选项保存文件

时间:2013-12-16 12:11:27

标签: java file preferences

嘿,我被赋予了编写.dat和.idx文件的任务,并将其保存到我服务器上的某个目录中,我可以这样做。

但现在我被分配了仅使用首选项将文件保存到目录的任务,我不确定该怎么做。 这是我到目前为止所拥有的;

private static String url2;
public static void generateDataFiles() throws FileNotFoundException {
    Preferences sysRoot = Preferences.systemRoot();
    Preferences prefs = sysRoot.node( "com/davranetworks/zebu" );
    url2 = prefs.get("dburl", "jdbc:hsqldb:E:\\eem");
    try {
        for(int days = 0; days < 3; days++) {
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
            new File(url2 + df.format(cal.getTime()) + "\\").mkdir();
            File fileNameDat = new File(url2 + "\\rubanData\\day\\" + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".dat");
            File fileNameIdx = new File(url2 + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".idx");
        }

这种方法要长得多,我只添加了认为必要的部分。

当我运行它时,我得到这个输出;

  

java.io.FileNotFoundException:jdbc:hsqldb:E:\ Davra   网络\ RUBAN \数据库\ eemdb \ rubanData \日\ 2013年6月11日\ 06-11-2013.dat   (文件名,目录名或卷标语法不正确)

在数据库目录中有一个名为rubanData的子目录,其中有另一个名为day的子目录。这是我想创建目录并将文件保存到的地方。

但是在数据库目录中有一些eemdb文件,并且首选项一直指向eemdb,我不知道如何更改它。

有人对此有任何帮助或建议吗?

2 个答案:

答案 0 :(得分:0)

我设法在我的本地机器上运行一个简单的测试,我没有使用Java的首选项的工作经验,但这是我如何使它工作:

 public static void generateDataFiles() throws FileNotFoundException {
        Preferences sysRoot = Preferences.systemRoot();
        Preferences prefs = sysRoot.node("ro");
        Calendar cal = Calendar.getInstance();
        url2 = prefs.get("dburl", "D:\\stackoverflow");
        try {
            for (int days = 0; days < 3; days++) {
                DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
                File dir = new File(url2 + df.format(cal.getTime()) + "\\");
                dir.mkdir();
                System.out.println(dir.canExecute());
                System.out.println(url2 + "\\rubanData\\day\\" + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".dat");
                boolean f = new File(url2 + "\\rubanData\\day\\" + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".dat").createNewFile();
                File fileNameDat = new File(url2 + "\\rubanData\\day\\" + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".dat");
                System.out.println(fileNameDat.canRead());
                File fileNameIdx = new File(url2 + df.format(cal.getTime()) + "\\" + df.format(cal.getTime()) + ".idx");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) throws FileNotFoundException {
        generateDataFiles();
    }

我确保“ro”的sysRoot节点的Preference存在并且它下面有一个名为“dburl”的密钥和值“D:\ stackoverflow” - 其中我应该有我的dat文件等

因此,在您的情况下,首选项可能设置为:

“E:\ Davra Networks \ RuBAN \ database \ eemdb \”,默认值为“jdbc:hsqldb:E:\ eem”

这就是为什么你有FileNotFoundException,因为你可能实际上在搜索错误的网址。

答案 1 :(得分:0)

jdbc:hsqldb:不是文件系统中的有效路径,它是JDBC查找数据库内容的路径。在文件系统中提供有效路径,您的代码可能会起作用。