2011-01-14 3 views
0

J'essaye de faire un système de highscore simple pour un jeu de dragueur de mines. Cependant, je continue d'obtenir une exception de fichier non trouvé, et j'ai essayé d'utiliser le chemin complet pour le fichier aussi.FileNotFoundException Java

package minesweeper; 

import java.io.*; 
import java.util.*; 

public class Highscore{ 

public static void submitHighscore(String difficulty) throws IOException{ 
    int easy = 99999; 
    int normal = 99999; 
    int hard = 99999; 
    //int newScore = (int) MinesweeperView.getTime(); 
    int newScore = 10; 
    File f = new File("Highscores.dat"); 

    if (!f.exists()){ 
    f.createNewFile(); 

    } 
    Scanner input = new Scanner(f); 
    PrintStream output = new PrintStream(f); 

    if (input.hasNextInt()){ 
    easy = input.nextInt(); 
    normal = input.nextInt(); 
    hard = input.nextInt(); 
    } 

    output.flush(); 



    if(difficulty.equals("easy")){ 
    if (easy > newScore){ 
    easy = newScore; 
    } 
    }else if (difficulty.equals("normal")){ 
    if (normal > newScore){ 
    normal = newScore; 
    } 
    }else if (difficulty.equals("hard")){ 
    if (hard > newScore){ 
    hard = newScore; 
    } 
    } 
    output.println(easy); 
    output.println(normal); 
    output.println(hard); 

} 

//temporary main method used for debugging 

public static void main(String[] args) throws IOException { 
    submitHighscore("easy"); 
} 

} 
+2

Un stacktrace ne serait pas une mauvaise idée. – gabuzo

Répondre

1

Vous ne révélez pas sur quelle ligne de code l'exception est émise. (Remarque: ne pas poster toutes les informations que vous avez sur le problème réduit vos chances d'obtenir des réponses utiles.)

Cependant, mon intuition est que cela vient du deuxième appel ci-dessous, auquel cas le problème réside dans l'essai pour ouvrir le fichier deux fois:

Scanner input = new Scanner(f); 
PrintStream output = new PrintStream(f); 
+0

Cela pourrait être, merci! Donc, je vais devoir fermer d'une manière ou d'une autre le Scanner, avant d'ouvrir le Prinstream? – TBH

+0

@Troels, exactement. La fermeture est facile - voir ['Scanner.close()'] (http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html#close%28%29) :-) –

+0

Cela l'a réparé :) Merci beaucoup! – TBH

0

Avez-vous vérifié que le fichier existe et que vous en avez les droits d'accès?

0

Avez-vous essayé?

if(f.isFile()) 
    System.out.println("Yes, we have a file"); 

if(f.canWrite()) 
    System.out.println("Yes, we have can write to the file"); 
+0

Les deux retourne true. Apparemment, il ne fait que lire à partir du fichier qui ne fonctionne pas, mais lors du débogage, il montre la filenotfoundexception à la fois pour le scanner et printstream, ce qui m'a troublé. Merci pour ses réponses, mais est-il possible de faire fonctionner la lecture du fichier? – TBH

+0

Jetez un oeil à http://stackoverflow.com/questions/1160050/java-i-streamstream-what-are-the-differences/1674000#1674000. Suivez le lien Aussi: http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html –

+0

Merci beaucoup! :) – TBH

Questions connexes