簡體   English   中英

使用參數化的類使用Java返回從指定文件讀取的數據

[英]use parameterized class to return read data from specified file using Java

我要做什么:在測試期間,我必須從不同的文件中讀取數據。 (用戶ID,Office ID等。每個ID在單獨的文件中)使用類read_file(file_name)的想法; 文件名-將是文件名,讀取位置。 我有的:

    public class Read_File {
    public static String client_number;
    private FileReader fr;

public static String read(String file_name){
String fileName=System.getProperty("user.dir")+"/src/resources/data_files/"+file_name+".txt";
try{
    FileReader inputFile = new FileReader(fileName);
    BufferedReader bufferReader = new BufferedReader(inputFile);

   String client_number = bufferReader.readLine();
    System.out.print("client number "+client_number);
   bufferReader.close();


} catch (FileNotFoundException e) {
    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
}
    return client_number;
}
public Read_File (FileReader fr) {
    this.fr = fr;

}
}

我正在嘗試運行它

  public void Find_Customer() {
    String client_number;

   Read_File file = new Read_File(fr);
   client_number = file.read("last_customer");
   System.out.print("client number"+client_number);
}

我能夠從文件中讀取值,但是當我嘗試從方法中獲取此值時-我為空。 我做錯了什么。 你能幫我把它寫正確嗎?

您的方法是靜態的。 您有2個名為client_number的實體。 一個是Read_File類的靜態成員,一個是String client_number = bufferReader.readLine();

try塊結束時,局部變量的作用域結束。 您實際上讀取了該值,但是返回成員client_number的值,該值為null。

試試這個client_number = bufferReader.readLine(); (刪除此聲明前面的String類型)。 還應注意,如果發生異常,則返回null。

另一個解決方案是刪除類成員client_number(代碼如下所示):

public class Read_File {
private FileReader fr;

public static String read(String file_name){
String fileName=System.getProperty("user.dir")+"/src/resources/data_files/"+file_name+".txt";
String client_number = null;
try{
    FileReader inputFile = new FileReader(fileName);
    BufferedReader bufferReader = new BufferedReader(inputFile);

   client_number = bufferReader.readLine();
   System.out.print("client number "+client_number);
   bufferReader.close();


} catch (FileNotFoundException e) {
    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
}
    return client_number;
}
public Read_File (FileReader fr) {
    this.fr = fr;

}
}

附帶說明一下,由於read方法是靜態的,因此您無需創建Read_File類型的對象。

好吧,您混淆了Java語言的幾個概念...一個快速而骯臟的修復程序看起來像這樣:

public class Read_File {

    public static String read(String file_name){
        String client_number = "";
        String fileName=System.getProperty("user.dir")+"/src/resources" + 
            "/data_files"+file_name+".txt";
        try{
            FileReader inputFile = new FileReader(fileName);
            BufferedReader bufferReader = new BufferedReader(inputFile);

            String client_number = bufferReader.readLine();
            System.out.print("client number "+client_number);
            bufferReader.close();


        } catch (FileNotFoundException e) {
            e.printStackTrace();  
            //To change body of catch statement use File | Settings | File Templates.
        } catch (IOException e) {
            e.printStackTrace();  
            //To change body of catch statement use File | Settings | File Templates.
        }
        return client_number;
    }
}

然后,您可以簡單地這樣稱呼它:

String client_number = Read_File.read("last_customer");

暫無
暫無

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

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