2016-04-29 12 views
-2

Webサーバーを実行していて、txt設定ファイルを読み込み、ポート番号、ディレクトリ、デフォルトのindex.htmlファイルなどを割り当てる必要があります。しかし、index.htmlをチェックすると、ファイルが存在するにもかかわらず存在しないということが続きます。ファイルが存在する場合でもJava Files.exists()はfalseを返します

txtファイルがこれを含んでいます

port=80 
directory=c:\www 
index=index.html 
listing=true 
connexions=5 

私は、ファイルのパーミッションをチェックし、ブロックされていないようです。 私は.exists()getAbsoluteFile().Exists()の両方を試してみましたが、ファイルを読み込むためのコード場合の両方がここで偽 を返す:

try { 
    BufferedReader br = new BufferedReader(new FileReader(config)); 

    while((line = br.readLine()) != null){ 
     tokens = line.split("="); 
     if(tokens.length > 1) { 
      switch (tokens.length) { 
       case 0: 
        if (Integer.parseInt(tokens[1]) > 0 && Integer.parseInt(tokens[1]) < 65535) { 
         portNumber = Integer.parseInt(tokens[1]); 
         param++; 
        } else { 
         System.err.println("Port in config file is invalid."); 
         System.exit(1); 
        } 
        break; 
       case 1: 
        File check = new File(tokens[1]); 
        if (check.getAbsoluteFile().exists()) { 
         rootPath = path ? args[1] : tokens[1]; 
         param++; 
        } else { 
         System.err.println("Specified directory doesn't exist in config file"); 
         System.exit(1); 
        } 
        break; 
       case 2: 
        File checkFile = new File(rootPath + "\\" + tokens[1]); 
        if (checkFile.getAbsoluteFile().exists()) { 
         indexFile = tokens[1]; 
         param++; 
        } else { 
         System.err.println("Index file in config file doesn't exist."); 
         System.exit(1); 
        } 
        break; 
       case 3: 
        if (tokens[1].toLowerCase().equals("true") || tokens[1].toLowerCase().equals("false")) { 
         list = tokens[1].equals("true"); 
         param++; 
        } else { 
         System.err.println("Can't validate the list parameter in config file."); 
         System.exit(1); 
        } 
        break; 
       case 4: 
        if (Integer.parseInt(tokens[1]) > 0) { 
         connNumber = Integer.parseInt(tokens[1]); 
         param++; 
        } else { 
         System.err.println("Number of connexions in config file is invalid."); 
         System.exit(1); 
        } 
        break; 
       default: 
        break; 
      } 
     } 
     else{ 
      System.err.println("Missing arguments in config file."); 
      System.exit(1); 
     } 

    } 
+1

check.getAbsoluteFile()。exists()を実行する前にファイルパスの値を直接ポストしてください。たぶんそのパスのフォーマットに失敗した – whymatter

答えて

0

あなたがウェブアプリを開発しているので、あなたが最初の場所でリソースフォルダを特定し、そのファイルを保証しなければなりませんそのディレクトリにアクセスしようとしています。

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("file/test.xml").getFile()); 
0

コードが混乱しています。

switch声明tokens.lengthcase 0との後にtokens[1]が続きます。 tokens.length == 0の場合、tokens[1]ArrayIndexOutOfBoundsExceptionをスローします。

実際にはより前のif (tokens.length > 1)では、case 0case 1を入力することはできません。また、ファイル内の5行には2つのトークンがあるため、の場合はすべてcase 2と入力します。

最初の行がport=80である場合、ファイル<rootPath>\80が存在する可能性は低くなります。

ヒント:tokens[0]の値は何かを意味します。おそらくそれを使うべきです。

+0

私はそれを修正しました – anon31428

関連する問題