ファイル拡張子が付いたLinux/Windowsでは、与えられたパスが有効であることを天気を検証する関数を記述しようとしています。WindowsとLinuxのパスを拡張子付きで検証する正規表現
例:
Windowsのパス:D:\ DATA \ MY_PROJECTの\ 01_07_03_061418738709443.doc
Linuxのパス:/source_data/files/08_05_09_1418738709443.pdf
は、私が試してみましたコードは
ですstatic String REMOTE_LOCATION_WIN_PATTERN = "([a-zA-Z]:)?(\\\\[a-z A-Z0-9_.-]+)+.(txt|gif|jpg|png|jpeg|pdf|doc|docx|xls|xlsx|DMS)\\\\?";
static String REMOTE_LOCATION_LINUX_PATTERN = "^(/[^/]*)+.(txt|gif|jpg|png|jpeg|pdf|doc|docx|xls|xlsx|DMS)/?$";
public boolean checkPathValidity(String filePath) {
Pattern linux_pattern = Pattern.compile(REMOTE_LOCATION_LINUX_PATTERN);
Pattern win_pattern = Pattern.compile(REMOTE_LOCATION_WIN_PATTERN);
Matcher m1 = linux_pattern.matcher(filePath);
Matcher m2 = win_pattern.matcher(filePath);
if (m1.matches() || m2.matches()) {
return true;
} else {
return false;
}
}
この関数は、pathがwindows/linuxのいずれかで有効な場合、結果をtrueにします。 上記の関数は、日付を含むいくつかのパスで正しい結果を返していません_? 、*そのパスに*。
これは価値がありますか?ファイルに無効な文字が含まれていても、ファイルに有効な文字が含まれていても、存在しない、またはアクセスできないパスを参照している場合は、リモート側で例外が発生します。たとえば、 '' /root/08_05_09.pdf ''は正規表現チェックを渡しますが、アプリケーションが行っている操作が失敗したと考えられます。したがって、リモート側での有効性のチェックは関係なく行われます。 – VGR
これらの検証は、クライアント側で実行されます。私はリモート側に従ってcheckPathValidity()メソッドを設定しています。 –