簡體   English   中英

如何將文件名字符串傳遞給另一個 Class 以便它在該 class 中創建文件 object?

[英]How can I pass a filename String to another Class so that it creates a File object in that class?

我有一個文件 object 在名為 ReadFiles 的 class 中創建。

public class ReadFiles {
    File file = new File("google.csv");
}

如上所述使用一組“google.csv”輸入時,文件創建工作。

我想要做的是從另一個 class StockBuySell 傳遞一個字符串文件名,這樣它在 ReadFiles 中創建的文件是基於字符串文件名創建的。 這是我嘗試過的:

public class ReadFiles {

    String filename;

    public ReadFiles(String filename) {
        this.filename = filename;
    }

    File file = new File(filename);
}

在同一個 package 中的另一個 class 中:

public class StockBuySell {
    ReadFiles googleData = new ReadFiles("google.csv");
}

我得到一個 NullPointerException。 我相信這是因為該文件不是由我的方法創建的。 我能做些什么? 謝謝您的幫助。

編輯:我意識到由於與讀取文件相關的其他方法,我遇到了錯誤。 我最終使用 hata 的方法來創建一個文件。 感謝你們!

你想要達到的目標是這樣的嗎?:

public class ReadFiles {

    File file;
    
    public ReadFiles(String filename) {
        file = new File(filename);
    }
}

NullPointerException 的原因應該是字段File file = new File(filename); . 在調用 Constructor 方法之前, filename最初是 null。

初始化的順序有點不穩定; 首先運行所有“實例初始化程序”(分配給字段的表達式是其中的一部分),然后才運行構造函數。 因此:

public class ReadFiles {
    private final String filename;
    private final File file;

    public ReadFiles(String name) {
         this.filename = filename;
         this.file = new File(filename); // put it here.
    }
}

不過,這段代碼有各種各樣的問題。 它使用的是舊的 API,並且命名不正確。 (此代碼正在讀取 1 個文件,但名為“ReadFiles”。此外,類不應以動詞命名,它應該描述它所代表的內容,而不是它的作用。它還有一個額外的,大部分無用的字段。

解決所有問題:

public class CsvReader {
    private final Path file;

    public CsvReader(String path) {
        this.file = Paths.get(path);
    }

    public CsvReader(Path path) {
        this.path = path;
    }
}

然后我們又遇到了另一個問題:讀取 csvs 聽起來很簡單,但事實並非如此。 使用諸如OpenCSV 之類的庫。

暫無
暫無

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

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