OVH Cloud OVH Cloud

Probleme de stockage

3 réponses
Avatar
caralho27
J'airéaliser le programme suivant qui permet lire un fichier et de
prendre les informations à partir du caractère '['. j'effectue alors
un affichage de ma variable text1 pour vérifier ce qu'elle comporte
et je me rend compte qu'elle ne comporte que le caractère '['.
Voici mon programme
import java.io.*;
import java.lang.*;
import java.lang.String;
import java.util.*;
public class TestConf1
{
public static void main(String[] args)
{
int i=0;
String source="c:/A000_commande.xml";
String dest="c:/conf.txt";
String dest1="c:/test.txt";
}

catch (IOException e)
{
System.out.println("Erreur =" + e.toString());
}
try {
BufferedReader brin1 = new BufferedReader(new FileReader(source));
BufferedWriter brout = new BufferedWriter(new FileWriter(dest1));
String text1=null;
boolean eof = false;
boolean inside = false;
while (!eof)
{

text1 = brin1.readLine();
System.out.println("1-"+text1);
//ce text1 fonctionne parfaitement

if (text1 == null)
{eof = true;}


else if ((text1.indexOf('[') ==0))
{
System.out.println("2-"+text1);
//ce text1 affiche '['
text1 =
text1.substring(text1.indexOf('[')+1,text1.length());
System.out.println("3-"+text1);
// ce text1 affiche "[ "
if(text1.indexOf('[')!=0 &&
i==0)
{
brout.write(text1);
brout.newLine();
System.out.println(text1);
i++;
inside = true;


}


else if(i>0 && text1.indexOf(']') ==0)
{
text1 = text1.substring(0,text1.indexOf(']'));
brout.close();
inside=false;
}
else if (inside) {
brout.write(text1);
brout.newLine();
}

System.out.println("4-"+t);
// ce text1 affiche ' '
}}
brout.close();
}
catch (IOException e)
{
System.out.println("Erreur =" + e.toString());
}



}


}

3 réponses

Avatar
Causse bruno
dans l'article , Tony à
a écrit le 24/11/03 14:32 :

try {
BufferedReader brin1 = new BufferedReader(new FileReader(source));
BufferedWriter brout = new BufferedWriter(new FileWriter(dest1));
String text1=null;
boolean eof = false;
boolean inside = false;
while (!eof)
{

text1 = brin1.readLine();
System.out.println("1-"+text1);
//ce text1 fonctionne parfaitement

if (text1 == null)
{eof = true;}


else if ((text1.indexOf('[') ==0))
{
System.out.println("2-"+text1);
//ce text1 affiche '['
text1 > text1.substring(text1.indexOf('[')+1,text1.length());
System.out.println("3-"+text1);
// ce text1 affiche "[ "
if(text1.indexOf('[')!=0 &&
i==0)
{
brout.write(text1);
brout.newLine();
System.out.println(text1);
i++;
inside = true;


}


else if(i>0 && text1.indexOf(']') ==0)
{
text1 = text1.substring(0,text1.indexOf(']'));
brout.close();
insideúlse;
}
else if (inside) {
brout.write(text1);
brout.newLine();
}

System.out.println("4-"+t);
// ce text1 affiche ' '
}}
brout.close();
}
catch (IOException e)
{
System.out.println("Erreur =" + e.toString());
}


try {
BufferedReader brin1 = new BufferedReader(new FileReader(source));
BufferedWriter brout = new BufferedWriter(new FileWriter(dest1));

String text1=null;
boolean inside = false; //a expliquer !!!

while ((text1 = brin1.readLine()) != null) {

System.out.println("1-"+text1); //fonctionne parfaitement (1)

if ((text1.indexOf('[') == 0)) { //'[' en 1ere position c'est ca ?
// je pense a != -1 => il existe au moins une occurence de '['

System.out.println("2-"+text1); //idem (1) mais avec 2 en 1er
caractere

//je pense a une erreur de fonction?
//text1 = text1.substring(text1.indexOf('[')+1,text1.length())
//plutot
text1 = text1.substring(text1.indexOf('[')+1); //supprime le '['
en 1ere position

System.out.println("3-"+text1);

if(text1.indexOf('[')!=0 && i==0) { //contient encore un '[' et
i == 0
brout.write(text1);
brout.newLine();
System.out.println(text1);
i++;
inside = true;
} else if(i>0 && text1.indexOf(']') ==0 ) { //i>0 et ']' en 1ere
position
text1 = text1.substring(0,text1.indexOf(']'));
brout.close(); //tu fermes le stream = plus d'ecriture future erreur
insideúlse;
} else if (inside) {
brout.write(text1);
brout.newLine();
}


/**************************************************************************
ne devrais tu pas boucler sur ces tests pour controler les autres occurences
de '['
**************************************************************************/

System.out.println("4-"+t);
// ce text1 affiche ' '
}
}

//tu es le responsable des streams = les fermer correctement dans toute
les situations possibles
//meme imprevisibles, la methode finaly est faite pour cela
brin1.close();
brout.close();
}
catch (IOException e) {
System.out.println("Erreur =" + e.toString());
}

je n'ai pas compri le but de ton programme encore une fois ton code n'est
pas clair.
Il existe un classe StringTokenizer (deja cité) plus adapté a ton probleme.
soignes un peu ta conception.

bon code si j'ose dire.
bruno

Avatar
Causse bruno
dans l'article BBE7FAE8.6406%, Causse bruno à
a écrit le 24/11/03 18:14 :

if(text1.indexOf('[')!=0 && i==0) { //contient encore un '[' et
i == 0


if(text1.indexOf('[')!=-1 && i==0) {
//contient encore un '[' et i == 0

Avatar
Causse bruno
dans l'article BBE7FAE8.6406%, Causse bruno à
a écrit le 24/11/03 18:14 :

else if(i>0 && text1.indexOf(']') == 0 ) {
//i>0 et ']' en 1ere position


else if(i>0 && text1.indexOf(']') != -1 ) {
//i>0 et ']' dans la chaine ?