2017-05-02 1 views
0
private static final String FILE_PATH = "MessageCompare\\src\\main\\resources\\json\\test.json";` 

File file = new File(FILE_PATH); 

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file.getAbsolutePath())));` 

Dans mon ordinateur, file.getAbsolutePath() retour
D: \ Dev \ Outil \ MessageCompare \ MessageCompare \ src \ \ principales ressources \ JSON \ test.jsonUtilisez Java pour obtenir des ressources sur l'ordinateur diff

Dans un autre ordinateur, file.getAbsolutePath() retour
D: \ Dev \ Outil \ MessageCompare \ src \ \ principales ressources \ JSON \ test.json

Pourquoi chemin absolu du retour de fichier plus un nœud que d'autres ' ordinateur?

+0

Vérifiez la structure des dossiers sur les deux ordinateurs. Je pense que votre espace de travail est configuré de deux manières différentes. – kkflf

+0

Votre chemin n'est pas absolu, par conséquent il sera résolu par rapport au répertoire de travail actuel, qui peut différer. – Holger

Répondre

0

Il pourrait être préférable d'utiliser un chemin relatif pour garantir la multiplicité de la plateforme.

Habituellement, deux façons d'obtenir des ressources.

  1. getClass() getResourceAsStream() < méthode non statique> & xxx.Class.getResourceAsStream() < méthode statique>
  2. de getClass() .getClassLoader(). getResourceAsStream() < Méthode non statique> & xxx.Class.getClassLoader(). getResourceAsStream() < méthode statique>

Quelle est la différence? Please notice this structure

  1. A propos de # 1, il utilise: InputStream in = getClass() getResourceAsStream ("/ JSON/rti.json");.
  2. Pour # 2, il utilise: InputStream dans = getClass(). GetClassLoader(). GetResourceAsStream ("json/rti.json");
0

Vous ne devez pas compter sur le chemin absolu d'un fichier pour cette raison, tout dépend de l'emplacement à partir duquel l'autre personne exécute le code. Dans votre cas, il existe un répertoire MessageCompare supplémentaire.

Au lieu de cela, utiliser le chargeur de classe pour charger le fichier:

MyClass.class.getResourceAsStream("/myFile.txt");

De cette façon, votre code sera plus facile à transporter.

0
File file = new File(FILE_PATH); 

Cette ligne crée un fichier. Le chemin d'accès du fichier dépend de votre dossier de projet et de votre configuration. Si votre poste de travail inclut un autre dossier appelé "MessageCompare" et que votre projet est configuré dans ce dossier, cela peut être la raison pour laquelle vous obtenez un nœud supplémentaire.