2017-01-13 22 views
1

私は明日のプログラミングミニコンテストを開催しており、私たちは与えられたフラッシュドライブでプログラムを作成する必要があります。裁判官は私たちのコードを編集することはありませんので、私はフラッシュドライブの文字が変更され、私のプログラムはそれが読み込む必要があるテキストファイルを見つけることができないことを心配しています。相対パスと絶対パスJava

私はいつも使っていますこのような私のフラッシュドライブのパス:

FileReader file = new FileReader("E:/BPA/Crypto/input.txt"); 

は私が私のフラッシュドライブのための文字の名前がで同じでない場合、私のプログラムは、にも関わらず、テキストファイルを読み込むことができるようになります保証するために方法はありますそれは私のものと同じようにコンピュータを判断する?ありがとう!

+0

コードは.jarファイルにパッケージ化されており、.jarファイルに関して予測可能な場所に保存されているテキストファイルですか? –

+0

プログラムが実行される場所に関連して必要な入力テキストファイルを置く –

+0

@RAZ_Muh_Tazあなたは私に例を挙げることができますか? – RyanWantsToLearn

答えて

3

あなたは

  1. 例えばファイル

InputStreamを取得するために使用Class.getResourceAsStream(String name)

  • あなたのソース内のファイルを入れて、あなたはクラスを持っている場合x.y.z.A

    1. コピーinput.txtをx/y/zパッケージにsrcフォルダに追加
    2. ファイルは、あなたがこの

      char drive = 'A'; 
          String filePath = ":/BPA/Crypto/input.txt"; 
          while(drive != 'Z') 
          { 
           try{ 
            Scanner readFromFile = new Scanner(new File(drive + filePath)); 
            readFromFile.close(); //add this if you simply want the path or drvie letter 
            break; 
           }catch(FileNotFoundException error) 
           { 
            System.out.println("Drive: " + drive + " did not contained file in " + drive + filePath); 
           } 
           drive += 1; 
          } 
      

      のような何かができるだろう運転わからない場合は、基本的な考え方は、のためにファイルを開こうとすることですInputStreamReader

    3. InputStreamReader fileStream = new InputStreamReader(A.class.getResourceAsStream("input.txt"));として
  • 0

    対応ゲット明らかにあなたはさらに進むことができますが、ドライブAYがあなたのソフトウェアをどこで実行しているかにかかわらず、すべての可能なドライブを安全に使い果たしてしまうと仮定しようとしています。

    私たちがWhileループを取得するとき、変数 "drive"には、あなたが必要とするドライブの正しい文字が入ります。文字を返す関数、またはおそらくファイルパスを変更するか、テキストファイルから読み込もうとするたびに一度だけ使用する関数に変更することができます。あなた次第。

    +0

    @RyanWantsToあなたはそれが何であるかにかかわらず、これを見つけるためにこのようなことができますか? –

    +0

    どうすれば相対パスを使用できますか? – RyanWantsToLearn

    関連する問題