Device Nameのチェック
Total: 8331, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
ファイルチューザーなどで入力されたファイル名が、デバイスファイル名(con、prn、nul、auxなど)でないかチェックします。
Screenshot

Advertisement
Source Code Examples
private boolean isCanonicalPath(File file) {
if (file == null) return false;
try {
if (file.getCanonicalPath() == null) {
return false;
}
} catch (IOException ioe) {
return false;
}
return true;
}
View in GitHub: Java, KotlinDescription
Java 1.4 + Windowsの環境で不正なファイルパス(c:\con.txtのようなDevice Nameを含む場合など)を読み書きしようとするとExceptionが発生する- 正しいファイルパスかどうかは
File#getCanonicalPath()メソッドがnullを返すかどうかでチェック可能 - 追記:
1.5.0_08で以下のように修正された - JDK 6リリースでの拡張機能 - Java I/O の拡張機能
- 引用:「
CON、NUL、AUX、LPTなどの予約されたデバイス名には必ずfalseを返すように、File.isFile()のWindows実装が変更されました。 以前の戻り値はtrueで、それがUnixで使用するデバイスの動作と整合していないことから、対象ユーザーはこれをバグとみなしていました。」
- 引用:「