3

私は Eclipse (SDK v4.2.2) を使用して Java プロジェクト (Java SE、v1.6) を開発しています。このプロジェクトは現在、1 回のパスで何度も使用されるメソッドの一部として、外部の .txt ファイルから情報を読み取ります。これらのファイルをプロジェクトに含めて、プロジェクトを外部ファイルから独立させるために「ネイティブ」にしたいと考えています。ファイルをプロジェクトに追加する場所や、適切な方法で簡単に使用できるように追加する方法がわかりません。

Google で検索しても確固たるガイダンスは得られず、このサイトでも同様の質問は見つかりませんでした。誰かがファイルを追加する方法とどこに行くべきかを知っていれば、アドバイスや正しい方向へのポイントさえもいただければ幸いです。また、コードまたは .txt ファイルに関する追加情報が必要な場合は、できるだけ詳しくお知らせください。

UPDATE 5/20/2013: テキスト ファイルをクラスパスに入れることができました。それらは、コードがパッケージ化されている「src」フォルダーと同じクラスパスレベルにある「resc」というフォルダーの下のパッケージにあります(dharamのアドバイスによる)。あとは、コードでこれらのファイルを適切に読み取る方法を理解する必要があります。具体的には、選択したファイルを 2 次元配列に読み取り、行ごとに読み取り、各行を区切り記号で分割したいと考えています。ファイルをワークスペース内に直接パッケージ化する前に、BufferedReader を使用してこれを行いました。

public static List<String[]> fileRead(String d) {
    // Initialize File 'f' with path completed by passed-in String 'd'.
    File f = new File("<incomplete directory path goes here>" + d);

    // Initialize some variables to be used shortly.
    String s = null;
    List<String> a = new ArrayList<String>();
    List<String[]> l = new ArrayList<String[]>();

    try {
        // Use new BufferedReader 'in' to read in 'f'.
        BufferedReader in = new BufferedReader(new FileReader(f));

        // Read the first line into String 's'. 
        s = in.readLine();

        // So long as 's' is NOT null...
        while(s != null) {
            // Split the current line, using semi-colons as delimiters, and store in 'a'.
            // Convert 'a' to array 'aSplit', then add 'aSplit' to 'l'.
            a = Arrays.asList(s.split("\\s*;\\s*"));
            String[] aSplit = a.toArray(new String[2]);
            l.add(aSplit);

            // Read next line of 'f'.
            s = in.readLine();
        }

        // Once finished, close 'in'.
        in.close();
    } catch (IOException e) {
        // If problems occur during 'try' code, catch exception and include StackTrace.
        e.printStackTrace();
    }

    // Return value of 'l'.
    return l;
}

Pangea が提供するリンクに記載されているメソッドを使用することにした場合 (getResourceAsStream を使用してファイルを InputStream として読み込む)、どうすれば同じ結果を達成できるかわかりません。誰かがこの同じ質問で解決策を見つけるのを手伝ってくれるでしょうか、それとも頭痛を防ぐためにその問題について別の質問に尋ねる必要がありますか?

4

4 に答える 4

1

ファイルを Java パッケージ内に格納し、クラスパス リソースとして読み取ることができます。たとえば、テキストファイルをJavaパッケージに追加して、com.fooこのスレッドを使用してそれらの読み取り方法を知ることができます: How to really read text file from classpath in Java

このように、それらは環境から独立しており、コード自体と一緒にパッケージ化されています。

于 2013-05-17T16:54:32.553 に答える
0

プロジェクトのクラスパスにファイルを追加します。

于 2013-05-17T16:58:44.937 に答える
-1

内部の .txt ファイルが必要だと思います。

Package Explorer => プロジェクトを右クリック => New => File 。次に、ファイル名をテキストで入力して終了します。

コード内のパスは次のようになります。

Scanner diskScanner = new Scanner(new File("YourFile"));
于 2013-05-17T18:04:34.690 に答える