无法使用 FileReader 和 BufferedReader 读取 Java 中的文本文件
Unable to read text file in Java using FileReader and BufferedReader
我想读取 java8 中的文本文件,但出现错误 "Type mismatch: cannot convert from FileReader to Reader"。如果我将 Reader class 更改为 FileReader 而不是我得到错误 "The constructor BufferedReader(FileReader) is undefined"
我的发言是
Reader fr = new FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
请推荐
您可能正在导入 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);
}
}
请检查您的导入;
要确认您有一个名为 FileReader
的 class,只需在代码中使用完整的 class 名称:
java.io.Reader fr = new java.io.FileReader("testfile.txt");
java.io.BufferedReader br = new java.io.BufferedReader(fr);
这将确保您使用特定的 class 而不是 yourPackage.FileReader
class.
然后,因为只有FileReader
似乎有问题,你可以清理一下:
import java.io.*
...
Reader fr = new java.io.FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
仅指定 FileReader
全名。
注意:
使用Class.GetPackage,你应该找出你使用的是哪个class。
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
- 没有导入
import B.*
: 包 A
- 没有导入
import B.Test
:包 B
我想读取 java8 中的文本文件,但出现错误 "Type mismatch: cannot convert from FileReader to Reader"。如果我将 Reader class 更改为 FileReader 而不是我得到错误 "The constructor BufferedReader(FileReader) is undefined" 我的发言是
Reader fr = new FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
请推荐
您可能正在导入 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);
}
}
请检查您的导入;
要确认您有一个名为 FileReader
的 class,只需在代码中使用完整的 class 名称:
java.io.Reader fr = new java.io.FileReader("testfile.txt");
java.io.BufferedReader br = new java.io.BufferedReader(fr);
这将确保您使用特定的 class 而不是 yourPackage.FileReader
class.
然后,因为只有FileReader
似乎有问题,你可以清理一下:
import java.io.*
...
Reader fr = new java.io.FileReader("testfile.txt");
BufferedReader br = new BufferedReader(fr);
仅指定 FileReader
全名。
注意:
使用Class.GetPackage,你应该找出你使用的是哪个class。
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
- 没有导入
import B.*
: 包 A - 没有导入
import B.Test
:包 B