ディレクトリに置かれた多数のファイルを処理するアプリケーションで作業しています。自分のアプリケーションで処理される各ファイルの完全修飾パスをデータベースに挿入します。アプリケーションですでに処理されているファイルがユーザーの再処理のために再提出された場合は、ファイルの完全修飾パスを指定してファイルに対して処理されたすべてのデータをデータベースから削除してから、新しいファイルであるかのようにファイルを削除します。プラットフォーム固有のパスをJavaのデータベースに挿入する方法
私が直面しています問題は、私は日食を介してアプリケーションを実行すると、以下のように、データベースに挿入されたパス名であることである: -
私はそのパスとファイル名を連結のaferD:\Trunk\App\Source
(pathString + File.seperator + fileNameString)すなわち、
D:\Trunk\App\Source/file1.txt
しかし、私は自分のアプリケーションのためのjarファイルを作成し、jarファイルをダブルクリックしてjarファイルを実行すると、以下のようにデータベースに挿入された完全修飾パスは、パス名データベースに挿入されたものは、安値: -
D:/Trunk/App/Source
私は
D:/Trunk/App/Source/file1.txt
アプリケーションを次のようにデータベースに挿入され、そのパス(pathString + File.seperator + fileNameString)つまり、完全修飾パスとファイル名が連結した後、 eclipseからアプリケーションを実行する代わりにjarをダブルクリックしてアプリケーションを実行すると、処理のために再送信されたファイルのデータを削除できません。削除するために使用されたクエリは関係なく、ただ、すべての"\"
あなたが処理するすべてのファイルパスの"/"
に、またはその逆の変換瓶
delete from file_table where where file = 'D:\Trunk\App\Source/file1.txt'
あなたはファイル区切りの1種類に固執カント?例えば。挿入中とデータベースを確認中に\/\をすべて変換する –
これはうまくいく可能性があります。私のアプリケーションは、すべてのファイルの処理が完了したら.csvレポートを生成しますが。このレポートには、各ファイルのパスが列の1つに含まれています。これは、私が直面している2番目の問題、すなわち、レポートに表示されるパスがプラットフォーム固有の意味を持つようにすることです。 – CKing