我想在java8中读取文本文件,我收到错误"类型不匹配:无法从FileReader转换为Reader"。如果我将Reader类更改为FileReader而不是我得到错误"构造函数BufferedReader(FileReader)未定义" 我的陈述是
Reader fr = new FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
请建议
答案 0 :(得分:1)
要确认您有一个名为FileReader
的课程,只需在代码中使用完整的班级名称:
java.io.Reader fr = new java.io.FileReader("testfile.txt");
java.io.BufferedReader br = new java.io.BufferedReader(fr);
这将确保您使用特定的类而不是yourPackage.FileReader
类。
然后,因为只有FileReader
似乎有问题,你可以清理它有点像:
import java.io.*
...
Reader fr = new java.io.FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
仅指定FileReader
全名。
注:
使用Class.GetPackage,您应该找出您正在使用的课程。
System.out.println(FileReader.class.getPackage());
JLS - 7.5. Import Declarations
包声明永远不会影响任何其他声明。
在包p的编译单元c中的单一类型导入声明d,它导入一个名为n shadow的类型,在整个c中,声明为:
- 在p
的另一个编译单元中声明的名为n的任何顶级类型- 由c
中的type-import-on-demand声明导入的任何名为n的类型- 由c
中的static-import-on-demand声明导入的任何名为n的类型
A
A.Run
A.Test
B
B.Test
在A.Run.java
System.out.println(Test.class.getPackage());
这是输出:
import B.*
:套餐A import B.Test
:包B 答案 1 :(得分:0)
您可能正在导入除java.io.BufferedReader和java.io.Reader之外的其他内容。
这有效
package com.company;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
Reader fr = new FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
}
}
请检查您的进口商品;