如何在Java中将特定于平台的路径插入数据库的文件
我正在开发一个应用程序,它可以处理目录中的大量文件。我想将应用程序处理的每个文件的完全限定路径插入数据库。如果应用程序已处理的文件被用户重新提交以进行重新处理,则我希望通过指定文件的完全限定路径,从数据库中删除为该文件处理的所有数据,然后像处理新文件一样处理该文件
我面临的问题是,当我通过eclipse运行应用程序时,插入数据库的路径名如下:-
D:\Trunk\App\Source
在我将文件名与其路径(pathString+file.Separator+fileNameString)连接之后,即插入数据库的完全限定路径如下
D:\Trunk\App\Source/file1.txt
但是,如果我为我的应用程序创建了一个jar,并通过双击jar来运行jar,则插入数据库的路径名如下:-
D:/Trunk/App/Source
将文件名与其路径(pathString+file.Separator+fileNameString)连接后,即插入数据库的完全限定路径如下
D:/Trunk/App/Source/file1.txt
如果通过双击jar而不是从eclipse运行应用程序来运行应用程序,则应用程序无法删除重新提交以进行处理的文件的数据。无论是从eclipse运行应用程序还是双击jar,用于删除的查询都是相同的
delete from file_table where where file = 'D:\Trunk\App\Source/file1.txt'
# 1 楼答案
将路径转换为URI并存储在数据库中。然后从URI重新创建文件
String uriName = new File(path).toURI().toString()
String path = new File(new URI(uriName)).getAbsolutePath();
# 2 楼答案
对于您处理的所有文件路径,只需将所有
"\"
转换为"/"
,反之亦然