73335


以下のプログラムで、ファイルを読み出そうとすると、コンパイルエラーが出ます。

[code]

    import java.util.*; //米印必須。もしくはjava.util.Scanner
    import java.io.*;
    
    public class Hanyujiao {
        public static void main(String[] args) {
            String str;
    
            try {
                
                FileReader file = new FileReader("漢語角.txt");
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
                
                String data;
                while ((data = br.readLine()) != null) {
                    boolean a=data.contains("小河大輔");
                    if(a){System.out.println("ファイルの中に小河大輔という文字はあります");}
                    System.out.print(data);
    
                    
                }
                br.close();
            } catch (FileNotFoundException e) {
                System.out.println(e);
            } catch (IOException e) {
                System.out.println(e);
            }
    
            // finally{filereader.close();}
    
        }
    
    }
    
[/code]

エラー内容は、以下の通りです。

[code]

    エラー: FileInputStreamに適切なコンストラクタが見つかりません(FileReader)
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
                                                                             ^
        コンストラクタ FileInputStream.FileInputStream(String)は使用できません
          (引数の不一致: FileReaderをStringに変換できません:)
        コンストラクタ FileInputStream.FileInputStream(File)は使用できません
          (引数の不一致: FileReaderをFileに変換できません:)
        コンストラクタ FileInputStream.FileInputStream(FileDescriptor)は使用できません
          (引数の不一致: FileReaderをFileDescriptorに変換できません:)
    
    
[/code]

FileReaderクラスと、BufferedReaderクラスは併用できないというルールでもあるのでしょうか？

**実行環境**  
openjdk version "15.0.1" 2020-10-20  
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.1+9)  
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.1+9, mixed mode, sharing)


CC BY-SA 4.0
2021-01-16T00:51:59.117
73334
2021-01-16T04:25:57.240
2021-01-16T04:25:57.240
3060
39688
question
java
ファイル読み込みの際にコンパイルエラーが出ます


FileInputStreamのコンストラクタはFile型かString型です。  
ご呈示のプログラムはFileReaderを渡しています。だからコンパイルエラーなのです。  
明確にAPI仕様に沿っていない。それだけのことです。  
<https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileInputStream.html>

ご呈示の例では

[code]

    FileReader file = new FileReader("漢語角.txt");
    
[/code]

を

[code]

    File file = new File("漢語角.txt");
    
[/code]

とするなどで直接の原因は解決しそうです。


CC BY-SA 4.0
2021-01-16T01:04:40.997
73335
2021-01-16T01:09:58.013
2021-01-16T01:09:58.013
10174
10174
73334
answer