2017-08-31 4 views
1

次のプログラムでは、Hw1_1.javaソースコードから読み込もうとしています。私は毎回FileNotFoundExceptionを取得します(たぶん正当な理由があります)。私は例外を得るのをやめようとしているので、プログラムが完全ではないことを知っています。私は迷っている。FileNotFoundExceptionは私が知っているファイルがディレクトリにあることを示します

誰かが正しい方向に向けることができたら、私はそれを高く評価します。

あなたが値 inputFileNameは単なるファイルであれば、あなたのコードに基づいて、異なる実行パス

を持つことができますが、IDEとしてIDEを使用している場合は特に、あなたのコード内でパスの複雑さを意識する必要が

package hw1_1; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.util.Scanner; 

public class Hw1_1 { 

    public static void main(String[] args) throws FileNotFoundException { 

     Scanner console = new Scanner(System.in); 
     System.out.println("Please enter the name of a java source code file"); 

     String inputFileName = console.next(); 
     String outputFileName = (inputFileName + ".txt"); 

     try { 

      File inputFile = new File(inputFileName); 
      Scanner in = new Scanner(inputFile); 
      PrintWriter out = new PrintWriter(outputFileName); 

      while (in .hasNextLine()) { 
       String line = console.nextLine(); 
       out.println(line); 
      } 

      in .close(); 
      out.close(); 

     } catch (FileNotFoundException exception) { 
      System.out.println("File Not Found"); 
     } 
    } 
} 
+4

IDEから実行していますか?その場合は、予期しない場所から実行している可能性があります。ファイルへの絶対パスを使ってみてください –

+0

おそらく: 'String line = console.nextLine();'は以下のようになります: 'String line = in.nextLine();' – DevilsHnd

+1

ファイルはJavaプログラムが探している場所にはありませんそれ。現在のディレクトリを見るには 'System.getProperty(" user.dir ")'の値を表示してみてください。また、あなたが探していると思っているものを探していることを確認するために、ファイル名を印刷してください。または、IDEデバッガのコードをステップ実行してください。 –

答えて

-1

名前(例:log.txt)と実行パスが実際に異なる場合、コードはパスを見つけることはありません

これは、完全な絶対パスを値として使用することを迅速に証明するための最も迅速で汚れた解決方法です。 inputFileNameたとえば、

String inputFileName = "/var/tmp/log.txt" 

または

String inputFileName = "C:/workspace/temp/log.txt" 

これはあなたのコードは、ファイルを読むことができることを確認したら、あなたはパスの問題、幸運の取り扱いを開始することができます。

0

まず、Javaプログラムのユーザーディレクトリを確認することをお勧めします。一度わかったら、簡単にFileNotFoundExceptionの問題をデバッグできます。

ユーザーディレクトリは、次のコードから印刷できます。ファイルの絶対パスを使用して

System.out.println(System.getProperty("user.dir")) ; 

は、問題を解決するための別の方法ですが、それはやって少し不規則な方法です。

関連する問題