Swing/DeviceName のバックアップの現在との差分(No.25)
- category: swing folder: DeviceName title: Device Nameのチェック tags: [File, JFileChooser, Fixed] author: aterai pubdate: 2003-09-08 description: ファイルチューザーなどで入力されたファイル名が、デバイスファイル名(con、prn、nul、auxなど)でないかチェックします。 image:
概要
ファイルチューザーなどで入力されたファイル名が、デバイスファイル名(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解説
Windows
環境で、Device Name
を含むような正しくないファイルパス(c:\con.txt
など)を読み書きしようとすると、Exception
が発生します。正しいファイルパスかどうかは、File#getCanonicalPath()
メソッドがnull
を返すかどうかでチェックすることができます。
-
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
で使用するデバイスの動作と整合していないことから、対象ユーザーはこれをバグとみなしていました。」
- 引用:「