En passant chemin d'accès du fichier comme un argument en Java
J'ai travaillé avec mise en mémoire tampon un fichier sur mon disque local pour analyser et d'obtenir certaines données. Des fins de test, j'ai été capable de le faire de cette façon:
public static void main(String[] args) {
fileReader fr = new fileReader();
getList lists = new getList();
File CP_file = new File("C:/Users/XYZ/workspace/Customer_Product_info.txt");
int count = fr.fileSizeInLines(CP_file);
System.out.println("Total number of lines in the file are: "+count);
List<String> lines = fr.strReader(CP_file);
....
}
}
fileReader.java fichier a la fonction suivante:
public List<String> strReader (File in)
{
List<String> totLines = new ArrayList<String>();
try
{
BufferedReader br = new BufferedReader(new FileReader(in));
String line;
while ((line = br.readLine()) != null)
{
totLines.add(line);
}
br.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//String result = null;
return totLines;
}
Maintenant, je veux le chemin d'accès au fichier pour être passé comme Argument de ligne de Commande à la place. J'ai essayé quelques petites choses mais je suis un peu nouveau à cela et n'était pas capable de le faire fonctionner. Quelqu'un peut s'il vous plaît aider et d'expliquer ce que toutes les modifications que je dois faire pour intégrer ce changement dans mon code.
Qu'avez-vous essayer?
J'avais essayé les méthodes mentionnées ci-dessous plus tôt, et il m'a jeté un ArrayIndexOutOfBoundException à la ligne où je suis passiong le Fichier(arg[0])
Cela sonne comme vous exécutez la commande CLI mal. Vous pouvez poster la commande exacte que vous sont en cours d'exécution? Êtes-vous de l'appeler sur un vrai CLI ou êtes-vous l'exécutez à partir d'une autre application (telle que votre IDE)?
Tout comme @Konstantin Narychkine a dit, comment utilisez-vous des arguments de ligne de commande ? quelque chose comme:
J'avais essayé les méthodes mentionnées ci-dessous plus tôt, et il m'a jeté un ArrayIndexOutOfBoundException à la ligne où je suis passiong le Fichier(arg[0])
Cela sonne comme vous exécutez la commande CLI mal. Vous pouvez poster la commande exacte que vous sont en cours d'exécution? Êtes-vous de l'appeler sur un vrai CLI ou êtes-vous l'exécutez à partir d'une autre application (telle que votre IDE)?
Tout comme @Konstantin Narychkine a dit, comment utilisez-vous des arguments de ligne de commande ? quelque chose comme:
java MainClass "C:/Users/XYZ/workspace/Customer_Product_info.txt"
? (Avec MainClass étant le nom de la classe avec votre main)OriginalL'auteur user3495420 | 2014-04-03
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour ce faire:
OriginalL'auteur peter.petrov
Si vous souhaitez remplacer le codés en dur chemin avec un que vous êtes en passant par la ligne de commande, vous devez simplement être en mesure de le faire passer dans une Chaîne de caractères. Votre code ne sera pas lu:
Assurez-vous de citer le chemin d'accès à la CLI, en particulier s'il contient un espace ou d'autres caractères spéciaux.
OriginalL'auteur Konstantin Tarashchanskiy
La réponse complète serait quelque chose comme ceci :
Le code ci-dessous par voie signifie /etc/dir/fileName.txt
}
Mais si vous voulez donner juste un chemin et à partir de ce chemin de votre code pour lire tous vos fichiers contenus dans ce répertoire vous auriez besoin de les ci-dessus pour être exportées dans un fichier jar code et un fichier bat/script :
fichier bat exemple :
Exécuter le script et votre code sera exécuté le fichier /fichiers qui sont sur le chemin C:/user/dir/*.zip
OriginalL'auteur Giovani Calota
Votre problème a deux côtés: comment passer le paramètre de la ligne de commande, et comment les lire à l'intérieur de votre code.
Passer des arguments à un programme Java
Tous les arguments signifiait pour la classe Java et pas pour la JVM, devrait être mis après le nom de la classe, comme ceci:
Choses à regarder dehors pour:
/
vs barres obliques inverses\
: puisque vous êtes sur un système Windows, je préfère utiliser des barres obliques inverses pour votre chemin, spécialement si vous êtes y compris la lettre de lecteur. Java peut fonctionner à la fois avec des variantes, mais il est préférable de suivre vos conventions."
pour permettre espaces: vous devez joindre à votre chemin d'accès entre guillemets doubles si tous les répertoires contenant des espaces dans leur nom, alors il suffit de double citer à chaque fois."C:\My path\XYZ\"
, le dernier double de devis sera inclus en tant que partie du chemin, à cause de la précédente anti-slash lui échapper\"
. Au lieu de cela,"C:\My path\XYZ"
fera l'affaire.La lecture des arguments de votre
main(String[])
méthodeMaintenant celui-ci est simple: comme d'autres l'ont souligné, la Chaîne avec votre chemin devrait maintenant être dans
args[0]
:J'ai ajouté quelques null vérification pour éviter les problèmes comme la
ArrayIndexOutOfBounds
vous exécutez.OriginalL'auteur walen