Aide pour ajouter un texte ( java2/sequentialfile )
sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 mars 2010
-
17 mars 2008 à 19:37
vaan3713
Messages postés48Date d'inscriptionjeudi 19 avril 2007StatutMembreDernière intervention23 avril 2013
-
4 avril 2008 à 23:30
salut tout le monde
vous pourrais m'aider svp dans ce truc: ça concerne les fichiers, il me faudrait obligatoirement savoir la technique de cet ajout
"ajouter
un nom sur le fichier, mais dans la bonne place car le fichier est
sensé etre trié alphabetiquement, genre cmine emine zmine ... et si tu
ajoutes dmine ça doit etre ajouté apres cmine"
voila le code :
import biputil.*;
import java.util.*;
// ajout par ordre alphabetique
public class ajout2 {
public static void main (String args[]) {
int j=0;
Vector tab=new Vector();
SequentialFile fichier=new SequentialFile();
boolean bok=fichier.open("ajout.txt",'r');
if (!bok) System.out.println("erreur");
String Ligne=fichier.read();
while (!fichier.EndOfFile)
{
tab.addElement(Ligne);
Ligne=fichier.read();
}
fichier.close();
sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 mars 2010 19 mars 2008 à 17:05
ah merci beaucoup monsieur uhrand ^^
sinon des petites questions ( je suis encore un noob ) :
while ((i < tab.size()) && (!trouve)) {
Ligne = (String) tab.elementAt(i);
String st = fichier.fieldOf(Ligne, 1);
String st2 = fichier.fieldOf(info, 1);
....
- à quoi sert fieldof, chercher sur le fichier ? on doit pas l'ouvrire d'abord ?
- c'est quoi la difference entre "set" et "insert" ?
( tab.insertElementAt(info, i); )
- le fieldof(ligne,1) le 1 ça veut dire chercher dans le premier champ n'est ce pas ? comment faire si on veut chercher dans un 2eme champ ? j'ai bien remplacé 1 par 2 et dans le fichier de traitement j'ai mis :
aa,az,asas
bss,baz,bds
mais l'ajout se fait directement sur la premiere ligne
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 20 mars 2008 à 04:49
Salut sikove, je ne connais pas du tout la méthode "fieldOf". Elle se trouve dans la classe "SequentialFile" qui n'est pas du standard java, et je ne saurais pas te dire non plus où tu pourrais la trouver. Cependant, à mon avis tu dois pouvoir t'informer dans ton entourage proche. La méthode "set" permet d'actualiser une ligne existante, tandis que "insert" insère une nouvelle ligne (comme le nom l'indique). Malheureusement, je ne peus pas du tout t'aider sur les fonctionalités de la classe "SequentialFile". Bon courage quand même, André.
sikove
Messages postés90Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention31 mars 2010 1 avril 2008 à 18:02
salut andré, je me suis beaucoup progressé depuis le jour où j'ai posté le code grace à des sites auto formation et ton aide, merci encore
maintenant je debute l'orienté objet, avec comme exercice remplacement d'un nom dans un fichier par un autre, en se basant aussi sur une class ecriture pour taper un texte mais aussi la methode fieldof ( que j'ignore encore son deroulement lol )
le voila :
import java.io.*;
import java.util.*;
public class objet {
public static void main (String args [])throws IOException {
Vector tab=new Vector();
BufferedReader fichier=new BufferedReader(newFileReader "ajout.txt");
String ligne=fichier.readline();
while (ligne!=null)
{tab.addElement(ligne);
ligne=fichier.readline();}
fichier.close();
System.out.println("ancien nom");
String anc_nom=ecrire();
System.out.println("nouveau nom");
String nov_nom=ecrire();
int i=0;
boolean trouve=true;
while(i<tab.size() && trouve)
{
ligne=(String)tab.elementAt(i);
String str=fichier.fieldOf(ligne,1);
if(anc_nom.equals(ligne))
{
ligne=ligne.replaceAll(anc_nom,nov_nom);
tab.setElementAt(ligne,i);
trouve=false;
}
i++;
}
PrintWriter fichier=new PrintWriter (new FileOutputStream ("ajout.txt"));
for ( int j=0; j<tab.size(); j++)
{ ligne=(String) tab.elementAt(j);
fichier.println(ligne);
}
fichier.close();
String fieldOf(String ligne, int indice, int separateur)
{ int position,occurence,positionfinal, positiondebut;
position=0;
for (int i=1; i<=index; i++)
{ occurence=ligne.indexOf(separateur,position);
positiondebut=position;
position=occurence+1; }
positionfinal=occurence;
return(ligne.subString(positiondebut,positionfinal);)
}
mais comme toujours y'a des erreurs, et cette fois ci je suis vraiment coincé ... tu pourrais m'aider stp andré ? j'en ai vraiment besoin de tes sages conseils, car la avec l'objet ça commence à se compliquer
Vous n’avez pas trouvé la réponse que vous recherchez ?
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 1 avril 2008 à 22:43
Voici une possibilité de mise en forme de ton petit programme:
package demo;
/*
* UpdateFile.java
*/
import java.io.*;
import java.util.*;
public class UpdateFile {
private BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in));
private String filename = "ajout.txt";
public UpdateFile() throws IOException {
List<String> tab = new ArrayList<String>();//"ArrayList" est plus performant que "Vector"
BufferedReader reader = new BufferedReader(new FileReader(filename));
String ligne = reader.readLine();
while (ligne != null) {
tab.add(ligne);
ligne = reader.readLine();
}
reader.close();
String anc_nom = readIn("ancien nom");
String nov_nom = readIn("nouveau nom");
for (int i = 0; i < tab.size(); i++) {
ligne = tab.get(i);
if (anc_nom.equals(fieldOf(ligne, 1, " "))) {
ligne = ligne.replaceAll(anc_nom, nov_nom);
tab.set(i, ligne);
break;
}
}
PrintWriter writer = new PrintWriter(new FileOutputStream(filename));
for (String string : tab) {
writer.println(string);
}
writer.close();
}
vaan3713
Messages postés48Date d'inscriptionjeudi 19 avril 2007StatutMembreDernière intervention23 avril 2013 2 avril 2008 à 12:50
bonjour, je voudrais s'il vous plait savoir a quoi sert la line suivante dans le code que vous avez proposé:
List<String> tab = new ArrayList<String>();
est ce que c'est pour créer un tableau dynamique comme en C++?
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 2 avril 2008 à 16:33
List<String> (ou ArrayList<String>) est un type paramétrisé qui fournit simplement la sûreté du type au moment de la compilation et élimine le besoin d'un "cast".