`URLConnection#guessContentTypeFromStream`メソッドを用いると、ファイルのコンテンツタイプを判定することができる。 ただし入力するInputStreamによっては正しく判定がされない場合があるため注意。 [ソース](https://github.com/unofficial-openjdk/openjdk/blob/342a565a2da8abd69c4ab85e285bb5f03b48b2c9/src/java.base/share/classes/java/net/URLConnection.java#L1467-L1646)を見るとわかるが、メソッドの先頭で`markSupported()`をチェックしている。このとき引数のInputStreamが`markSupported()`の呼び出しに対してfalseを返すと一切判定されずnullが返ってしまう。 これを回避する一つの方法として、引数に渡すInputStreamを`BufferedInputStream`でラップすれば良い。 以下が正しく動作する例。 ```java String contentType = URLConnection.guessContentTypeFromStream(new BufferedInputStream(new FileInputStream(file)))); ``` [参考](https://blog.magnolia.tech/entry/2018/06/01/064208)
2022/01/12 18:33:13

コメント (0)

あなたもコメントしてみませんか

アカウント新規作成(無料)

既にアカウントを持っている方は ログイン