質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

36476閲覧

Files.linesつかったときにMalformedInputException:が投げられてしまいます

zoemond

総合スコア50

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/07/05 03:50

###前提・実現したいこと
ファイルを読み込んでStreamにしようとしているのですが、例外が出て困っています。
どなたか解決策をご存知でしたら教えていただきたいです。

###該当のソースコード
以下のようなコードを書きました。

java

1try (Stream<String> stream = Files.lines(Paths.get(filePath))) { 2} catch (IOException e) {}

すると、こういう例外が投げられます。

Caused by: java.nio.charset.MalformedInputException: Input length = 1

###試したこと
javaDocには

static Stream<String> lines(Path path) ファイル内のすべての行をStreamとして読み取ります。 static Stream<String> lines(Path path, Charset cs) ファイル内のすべての行をStreamとして読み取ります。

とあり、試しにCharsetの指定をしてみましたが、同様の例外が投げられました。

try (Stream<String> stream = Files.lines(Paths.get(filePath),StandardCharsets.UTF_8)) { } catch (IOException e) {}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moonphase

2016/07/05 04:00

入力ファイルの内容を教えて下さい。
zoemond

2016/07/05 04:06

お手数をおかけしてすみません、 メモ帳に日本語と英語と記号が20文字書いてあるファイルです。
guest

回答2

0

ベストアンサー

JavaDocには、

入力バイト・シーケンスが指定文字セットにとって正当でない場合、または入力文字シーケンスが16ビットの正規Unicodeシーケンスでない場合にスローされるチェック例外です。

と書かれています。

UTF8を指定して例外が発生しているのであれば、そのファイルはUTF8ではないということです。

投稿2016/07/05 04:04

MasafumiOkamoto

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zoemond

2016/07/05 05:11 編集

調べてみるとメモ帳でUTF8形式のファイルを保存するとBOMというものがついてしまい、そのせいで例外が投げられていることがわかりました。 かっこつけて試したことにJavaDocには・・・と書きましたが、全然調べることができていませんでした。くだらない質問をして申し訳ありません。 ありがとうございました。
guest

0

MasafumiOkamotoさんのいうように、エンコーディングがUTF8ではないということです。
Input length = 1
Windowsを使ってメモ帳で作成した場合は、CP932になっていると思います。

入力のエンコーディングをファイルに合わせてCP932にするか、入力ファイルのエンコーディングをUTF8に変更しましょう。

投稿2016/07/05 04:38

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zoemond

2016/07/05 05:15

答えていただきましてありがとうございました。 cp932はSJIS(Shift-JIS)なんですね。
zoemond

2016/07/05 05:37

すみません SJISとShift-JISは別物でした。cp932はShift-JISです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問