web-dev-qa-db-ja.com

テキストファイルの相対パスの読み方

私はあちこちでソースを読みましたが、次のコードは動作しませんでした。基本的に、「src」フォルダから「Administrator」という名前のテキストファイルを読みたいです。このプロジェクトは他の人に譲渡される可能性があるため、相対パスが必要です。しばらくお待ちください。

public void staffExists () throws IOException
    {               
        //http://stackoverflow.com/questions/2788080/reading-a-text-file-in-Java
        BufferedReader reader = new BufferedReader(new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt")));

        try
        {               
            String line = null;
            while ((line = reader.readLine()) != null)
            {
                if (!(line.startsWith("*")))
                {
                    System.out.println(line);
                }
            }

        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }               

        finally
        {
            reader.close();
        }           
    }
11
user2945412

これは有効な絶対パスです(私が知っているシステム上):

    /path/to/directory/../../otherfolder/etc/

その他の答え が言っていたのは、現在のディレクトリへのパスを取得することでした:

    String filePath = new File("").getAbsolutePath();

次に、相対パスを次と連結します。

    filePath.concat("path to the property file");
21
willy

今、私はそれを手に入れました、ここで多少の答えがあり、私を目標に導くのに役立ちます。私のコードを少し編集しただけでうまくいきました。また、貧しい人々の助けになることを願っています。

String filePath = new File("").getAbsolutePath();
System.out.println (filePath);

//http://stackoverflow.com/questions/2788080/reading-a-text-file-in-Java    
//http://stackoverflow.com/questions/19874066/how-to-read-text-file-relative-path
BufferedReader reader = new BufferedReader(new FileReader(filePath + "/src/DBTextFiles/Administrator.txt"));

try
{                           
    String line = null;         
    while ((line = reader.readLine()) != null)
    {
        if (!(line.startsWith("*")))
        {
            System.out.println(line);
        }
    }               
}
catch (IOException ex)
{
    ex.printStackTrace();
}               

finally
{
    reader.close();
}                   
11
user2945412

これは正しくありません:

new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))

あなたが欲しい:

new InputStreamReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))
1
Robin Green

ほとんどすべての場合、ポータブルスラッシュ"/"."を使用する必要があります。どの場合でも、File(親)とString(ファイル名)を受け入れるFileコンストラクターを使用するか、System.getProperty("file.separator").を使用する必要があります

0
Kas