簡體   English   中英

無法使用FileReader和BufferedReader讀取Java中的文本文件

[英]Unable to read text file in Java using FileReader and BufferedReader

我想在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。 進口報關單

這些聲明所導入的類型或成員的范圍和陰影在§6.3§6.4中指定。

6.4.1。 陰影

包聲明永遠不會遮蓋任何其他聲明。

程序包p的編譯單元c中的單類型導入聲明d,在整個c中導入名為n shadows的類型:

  • 在p的另一個編譯單元中聲明的任何名為n的頂級類型
  • 由c中的按需類型導入聲明導入的任何名為n的類型
  • 由c中的按需靜態導入聲明導入的任何名為n的類型

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

您可能正在導入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);
        }
}

請檢查您的進口;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM