Comment utiliser “ls *.c” commande en java?
Je suis en train d'imprimer "*.C" des fichiers en java
J'utilise le code ci-dessous
public static void getFileList(){
try
{
String lscmd = "ls *.c";
Process p=Runtime.getRuntime().exec(lscmd);
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
}
catch(IOException e1) {
System.out.println("Pblm found1.");
}
catch(InterruptedException e2) {
System.out.println("Pblm found2.");
}
System.out.println("finished.");
}
P. S:- Il fonctionne très bien pour les "ls" de commande.quand je suis à l'aide de "*" dans n'importe quelle commande, tous ne sont pas de travail. besoin le remplacement de "*" dans la commande en java.
Mise à JOUR
Merci pour votre aide les gars.
Maintenant j'ai besoin de le même résultat pour le commentaire de " ls -d1 $PWD/** "en java. c'est la liste de tous les noms de répertoire avec le chemin complet.
Merci pour votre temps.
Est-il une raison spécifique pour laquelle vous avez besoin de faire cela avec la
Ne getRuntime.exec() en java comprend * ou pas?
Ouais... j'ai besoin d'imprimer le fichier/répertoire des noms de chemin d'accès complet. j'ai donc essayé avec cet exemple.
Re: mise à jour: à ne pas faire; ne pas déplacer les poteaux sur votre question. Si votre question initiale a été répondu, accepter cette réponse, et d'essayer de résoudre vos modifications de problème en utilisant les informations que vous avez. Ne faites pas glisser les personnes qui ont répondu par écrit l'ensemble de votre programme. Si vous êtes coincé à nouveau, ouvrir une nouvelle question avec la façon dont vous êtes.
Aussi, dans Java SE 7, il semble que vous ayez une API disponible pour d'expansion chemins d'accès de fichier: docs.oracle.com/javase/tutorial/essential/io/find.html . D'expansion est ce que vous appelez l'expansion de chemin de modèles (
ls
commande?Ne getRuntime.exec() en java comprend * ou pas?
Ouais... j'ai besoin d'imprimer le fichier/répertoire des noms de chemin d'accès complet. j'ai donc essayé avec cet exemple.
Re: mise à jour: à ne pas faire; ne pas déplacer les poteaux sur votre question. Si votre question initiale a été répondu, accepter cette réponse, et d'essayer de résoudre vos modifications de problème en utilisant les informations que vous avez. Ne faites pas glisser les personnes qui ont répondu par écrit l'ensemble de votre programme. Si vous êtes coincé à nouveau, ouvrir une nouvelle question avec la façon dont vous êtes.
Aussi, dans Java SE 7, il semble que vous ayez une API disponible pour d'expansion chemins d'accès de fichier: docs.oracle.com/javase/tutorial/essential/io/find.html . D'expansion est ce que vous appelez l'expansion de chemin de modèles (
*
, ?
etc.) dans un shell.OriginalL'auteur Querier | 2013-03-24
Vous devez vous connecter pour publier un commentaire.
Vous trouverez peut-être ce les plus fiables:
Files
doit être le chemin à parcourir.OriginalL'auteur VGR
Alternativement, vous pouvez utiliser
dossier public[] Fichier.listFiles(FilenameFilter filtre)
OriginalL'auteur Gregory Pakosz
Vous avez besoin pour exécuter une commande de la forme "bash -c 'ls *.c'" ... parce que le java
exec
méthodes ne comprends pas'*'
expansion (expansion). (Le "bash -c" formulaire permet un shell est utilisé pour traiter la ligne de commande.)Cependant, vous ne pouvez pas simplement fournir la commande ci-dessus comme une seule Chaîne de
Runtime.exec(...)
, parce queexec
aussi ne pas comprendre la bonne façon de diviser une commande chaîne qui a citant.Par conséquent, pour obtenir
exec
de faire la bonne chose, vous avez besoin de faire quelque chose comme ceci:En d'autres termes, vous devez faire l'argument de fractionnement à la main ...
Il convient de noter que cet exemple pourrait également être mis en œuvre en utilisant
FileMatcher
pour effectuer le "expansion" et de les assembler à l'argument de la liste des résultats. Mais est compliqué si vous allez quelque chose d'autre que de courirls
... et de l'OMI, la complexité n'est pas justifiée.OriginalL'auteur Stephen C
Le Java est d'utiliser un
FilenameFilter
. J'ai adapté un exemple de code à partir de ici:mise à jour:
Pour votre mise à jour, vous pouvez effectuer une itération sur un
new File (".").listFiles();
et questionfile.getAbsolutePath()
sur chaque fichier.OriginalL'auteur corny
Un exemple à la liste des fichiers depuis Java 7.
OriginalL'auteur Sifeng
La
*
est développée par le shell. Afin de l'utiliser pour développer un nom de fichier comme une boule, vous devez appeler lels
de commande via un shell, par exemple comme ceci:Modifier
Bon point de @Stephen, sur exec à défaut de scinder la commande. Pour exécuter la
ls -d1 $PWD/*
vous pouvez le faire comme ceci:OriginalL'auteur user000001