我想在 java8 中读取文本文件,但收到错误“类型不匹配:无法从 FileReader 转换为 Reader”。如果我将 Reader 类更改为 FileReader ,则会收到错误“构造函数 BufferedReader(FileReader) 未定义” 我的发言是
Reader fr = new FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
请提出建议
最佳答案
要确认您有一个名为 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
The scope and shadowing of a type or member imported by these declarations is specified in §6.3 and §6.4.
A package declaration never shadows any other declaration.
A single-type-import declaration d in a compilation unit c of package p that imports a type named n shadows, throughout c, the declarations of:
- any top level type named n declared in another compilation unit of p
- any type named n imported by a type-import-on-demand declaration in c
- any type named n imported by a static-import-on-demand declaration in c
示例
A
A.Run
A.Test
B
B.Test
在A.Run.java中
System.out.println(Test.class.getPackage());
这是输出:
- 不导入:包 A
- 不导入
导入B.*
:包A - 不导入
导入B.Test
:包B
关于java - 无法使用 FileReader 和 BufferedReader 在 Java 中读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589148/