Device Nameのチェック
Total: 7922
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
ファイルチューザーなどで入力されたファイル名が、デバイスファイル名(con
、prn
、nul
、aux
など)でないかチェックします。
Screenshot
Advertisement
サンプルコード
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, Kotlin解説
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
で使用するデバイスの動作と整合していないことから、対象ユーザーはこれをバグとみなしていました。」
- 引用:「