Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用首选项保存文件_Java_File_Preferences - Fatal编程技术网

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

在Java中使用首选项保存文件,java,file,preferences,Java,File,Preferences,嘿,我接到一个任务,写一个.dat和.idx文件,并将其保存到我服务器上的某个目录中,我可以这样做 但是现在我被分配了只使用首选项将文件保存到目录的任务,我不确定该怎么做。 这是我到目前为止所拥有的 private static String url2; public static void generateDataFiles() throws FileNotFoundException { Preferences sysRoot = Preferences.systemRoot();

嘿,我接到一个任务,写一个.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\database\eemdb\rubanData\day\06-11-2013\06-11-2013.dat 文件名、目录名或卷标语法不正确

在数据库目录中有一个子目录rubanData,其中还有另一个子目录day。这是我想要创建目录和保存文件的地方

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


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

我设法在本地机器上运行了一个简单的测试,我没有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节点的首选项存在,并且它下面有一个名为dburl和值D:\stackoverflow的键,在这里我应该有我的dat文件等等

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

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

这就是为什么会出现FileNotFoundException,因为您可能实际搜索了错误的url。

值jdbc:hsqldb:在文件系统中不是有效的路径,它是jdbc查找数据库内容的路径。在文件系统中提供一个有效的路径,您的代码可能会正常工作