|
Dernière réponse | |
---|---|
Sujet : [java ,linux] comment gérer un truc comme ça ? | |
benou | le principale c'est que t'y soit arrivé ! :) |
Aperçu |
---|
Vue Rapide de la discussion |
---|
benou | le principale c'est que t'y soit arrivé ! :) |
drakkeng |
|
benou | fais une classe Echos qui écris tout ce qu'il y a sur l'entrée standard. Une fois que t'auras vérifié qu'elle marche, essaye de faire "java Echo < truc.txt" pour voir si la redirection est bien gérée par linux et pas récupérée dans les arguments de la classe |
darklord22 |
|
drakkeng | j'y arrive toujours pas !!!
bien sur si je spécifie le nom du fichier dans mon code ça marche sinon ,je n'arrive pas a recupérer le conteny du fichier ... help |
drakkeng |
|
petoulachi |
|
benou | Comme je le disais, tu n'as pas à t'occuper de ca : unix va rediriger le contenu de ton fichier vers l'entrée standard de ton prog.
en Unix (et même sous DOS) : unExecutable < unFichier.txt ca "déconnecte" le clavier et ca envoie tout ce qu'il y a dans le fichier de la même façon que si tu retappais le fichier à la main. de la même façon tu peux rediriger la sortie standard vers un fichier : unExecutable > unFichier.txt ca "déconnecte" l'affichage à l'écran et ca écrit tout dans le fichier. c'est comme ca que tu peux te servir de cat comme d'un éditeur de texte : cat > truc.txt (la tu tapes du texte et tu finies par taper ctrl-D) et tu verras que ca a créé un fichier truc;txt avec ce que tu as tappé dedans. jette un coup d'oeil à tes cours d'unix sur les redirections. [edtdd]--Message édité par benou--[/edtdd] |
drakkeng |
|
benou |
|
benou | logiquement tu ne dervais pas avoir le < tonFichier.txt puisque ce sera interprété par le shell unix : dans le tableau d'argument tu n'auras plus que les numéros de ligne |
drakkeng |
|
drakkeng |
[edtdd]--Message édité par Drakkeng--[/edtdd] |
darklord22 |
|
petoulachi | si c ptete ça, en supposant que ça commence par 0 |
benou |
|
benou | dans ce cas, il faut que tu lise System.in, que tu stockes toutes les lignes dans une liste, puis que tu n'affiche que celles dont le numéro de ligne t'as été passé en paramètre. Ca c'est pour la méthode brute, en espérant que tes fichiers soient pas trop gros ...
Le plus simple c'est de passer par un reader pour lire sur l'entrée standard : Reader fichier = new BufferedReader(new InputStreamReader(System.in)); String ligne=fichier.readLine(); while (ligne != null) { // tu sauvegardes la ligne dans une List ligne=fichier.readLine(); } ... |
petoulachi |
|
darklord22 |
|
drakkeng | en fait je m'exmprime mal !!!!!!
voici le probléme complet !!!!! le probléme est d'ecrire un filtre java qui permette d'extraire des lignes d'un fichier de l'entrée standard vers la sortie standard donc j'ai un fichier txt qui contient : salut toto bonjour et jeux veux que la ligne suivante tapper dans la console: java monprog 2 1 < data.txt produise l'affichage suivant dans la console: bonjour toto |
darklord22 |
|
aurel |
|
benou | premièrement, ni "java" ni le nom de la classe ne sont présent dans le tableau d'argument (on est pas en C) : arg[0] renvoit le 1er argument passé à la classe. ensuite, sous unix ou linux, '<' sert à rediriger le contenu d'un fichier vers l'entrée standard du process. donc, pour lire le contenu de ton fichier en tapant java monProg < data.txt, tu n'as qu'à lire le flux System.in si ce que tu veux c'est lire le contenu d'un fichier passé en paramètre, tu n'as qu'à faire java monProg data.txt, et dans ta classe un truc du genre : import java.io.*; ... Reader fichier = new BufferedReader(new FileReader(arg[0])); String ligne=fichier.readLine(); while (ligne != null) { // tu fais ton traitement avec la ligne du fichier ligne=fichier.readLine(); } fichier.close(); |
darklord22 |
[edtdd]--Message édité par darklord22--[/edtdd] |
darklord22 |
|
petoulachi | le "<" est un operateur de redicrection.
En effet je l'avais pas vu. Heu par contre je sais plus dans quel sens ça marche. le < redirige vers l'argument suivant ? Tu peux pas nous eclaircir un peu ? (pourquoi tu dois faire comme ça ...) |
aurel | ouais j'avais pas vu les autres reponses avant...
et en collant ?? : java monprog <data.txt |
drakkeng |
|
aurel | Ba avec le tableau de String passé en paramatre a Main:
public void (main String args[]) args[0]=java args[1]=monprog args[2]=< args[3]=data.txt non? |
drakkeng |
[edtdd]--Message édité par Drakkeng--[/edtdd] |
petoulachi | il faut que tu regardes dans ta liste argv[]. c comme en C (peut etre t'en a jamais fais ...)
En gros:
|
drakkeng | je veux faire un programme qui lise un fichier data.txt en tappant la ligne de commande : java monprog < data.txt j'aimerais juste savoir comment recupérer le nom "data.txt" dans mon prog java(je sais comment ouvrir le fichier etc). merci |