嘿,我接到了一个任务,要写一个.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:\DavraNetworks\RuBAN\database\emdb\rubanData\day \06-11-2013\06-11-2013.dat(文件名、目录名或卷标语法不正确)
在数据库目录中有一个名为rubanData的子目录,其中还有另一个子目录名为day。这是我想要创建目录并将文件保存到的地方。
但在数据库目录中有一些eemdb文件,首选项一直指向eemdb,我不知道如何更改。
有人对此有什么帮助或建议吗?
我设法在本地机器上运行了一个简单的测试,我在Java中没有使用Preferences的经验,但以下是我如何使其工作的:
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\emdb\",默认值为"jdbc:hsqldb:E:\eem"
这就是为什么您会出现FileNotFoundException,因为您实际上可能在搜索错误的url。
值jdbc:hsqldb:不是文件系统中的有效路径,它是jdbc查找数据库信息的路径。在文件系统中提供一个有效的路径,您的代码很可能会工作。