Inexplicable

cs_psychodingue Messages postés 67 Date d'inscription samedi 5 janvier 2002 Statut Membre Dernière intervention 2 juin 2005 - 23 avril 2003 à 22:59
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 24 avril 2003 à 22:34
Salut à tous,

File f = new File("c:/exemple.txt");
FileInputStream is = new FileInputStream(f);
byte[] line = new byte[(int)f.length()];
is.read(line);
String t = new String(line);
String TempDir = t.substring(t.indexOf("aaa=")+4, t.indexOf("\n", t.indexOf("TempDir=")+4));
TempDir = TempDir.replace('\\', '/');

dans le fichier, il y a des valeurs de style
aaa=dd
bbb=rr
ccc=ff
et aaa n'est pas le premier
la valeur de aaa est un chemin de dossier
Au final j'ai par exemple c:/dd/ff/rrmais quand je veux obtenir c:/dd/ff/rr/ en fesant TempDir TempDir + "/" ça me donne /:/dd/ff/rr, et si après je veux marquer System.out.println("Répertoire " + TempDir) ça donnera
/épertoire = c:/dd/ff/rr
Quelqu'un y comprend quelquechose?
Merci d'avance
@ bientôt

8 réponses

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
24 avril 2003 à 01:14
J'ai trouvé !

Ton fichier contient des caractères '\r'. Et lorsque tu fais TempDir+= "/";
tu ajoutes le caractère au début a cause du caractère '\r'.

J'ai essayé le code suivant et ca fonctionne:

import java.io.*;

class Toto
{
public static String stringReplace(String aStr, String aOldVal, String aNewVal)
{
try
{
String lRes= "";
int lI= 0, lJ, lLen= aOldVal.length();

if( lLen > 0 ) for(lI0; (lJ aStr.indexOf(aOldVal, lI)) >= 0; lI= lJ + lLen)
lRes+= aStr.substring(lI, lJ) + aNewVal;

return ( lI < aStr.length() )?(lRes + aStr.substring(lI)):lRes;
}
catch(Exception e)
{
return aStr;
}
}

public static void main(String[] args)
{
try
{
File f= new File("exemple.txt");
FileInputStream is= new FileInputStream(f);
byte[] line = new byte[(int)f.length()];

is.read(line);
String t= stringReplace(new String(line), "\r", "");

for(int i= 0; (i= t.indexOf("=", i)) >= 0; i++)
{
i++;
String TempDir= t.substring(i, t.indexOf("\n", i));

TempDir = TempDir.replace('\\', '/') + "/";

System.out.println(TempDir);
}
}
catch(Throwable err)
{
err.printStackTrace();
}
}
}

Core Breaker :)
0
cs_psychodingue Messages postés 67 Date d'inscription samedi 5 janvier 2002 Statut Membre Dernière intervention 2 juin 2005
24 avril 2003 à 01:24
lol ok c'est bien, mais maintenant j'arriverai pas à le reprendre ton code... au fait, les \r ils servent à koi?
0
cs_psychodingue Messages postés 67 Date d'inscription samedi 5 janvier 2002 Statut Membre Dernière intervention 2 juin 2005
24 avril 2003 à 01:29
ha oui c'est bon je l'ai mis... tu es fatigué ou alors j'pe encore te poser une énigme? lol
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
24 avril 2003 à 01:32
Les '\r' sont les retour chariot (différent des '\n' retour à la ligne suivante)
Les '\r' permet de se replacer en début de ligne est sur la même ligne.

Core Breaker :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
24 avril 2003 à 01:32
Dis toujours

Core Breaker :)
0
cs_psychodingue Messages postés 67 Date d'inscription samedi 5 janvier 2002 Statut Membre Dernière intervention 2 juin 2005
24 avril 2003 à 01:40
Bon, alors pour commencer, y'a le script que tu m'a fait tout à l'heure pour calculer la taille d'un fichier sans les espaces, parceque d'après moi (et je ne voi pas d'autre solution), quand tu lancer un téléchargement, émule cré un fichier de taille égale au fichier que tu veux télécharger et y met que des espaces, pui le rempli au fur et à mesure. J'ai un de ces fichiers qui faire 696 mega totalement, et j'en ai téléchargé 85 mega, j'ai essayé ton script et ça me renvoi la valeur 1561... d'abord c'est 1561 octets? puis à partir de là, soit c'est moi qui me suis gouré et ça se trouve pas comme ça, soit c'est qu'il y a une couille dans ton script.

Pour la 2ème énigme, faudrai que je t'envoi des p'tit fichiers d'émule. ils font 2 ko a peu près et sont blindé de caractère spéciaux. C'est dans ces fichiers que se trouve le nom des fichiers que tu télécharge. Faudrai trouver le point commun de ces fichiers à fain de concevoir un algorithme qui permetrai de récupérer les nom de fichiers.

Voilà, j'vais essaye de trouver un serveur pour te mettre ces fichiers là
Merci
@ tte à l'heure surement
0
cs_psychodingue Messages postés 67 Date d'inscription samedi 5 janvier 2002 Statut Membre Dernière intervention 2 juin 2005
24 avril 2003 à 01:42
lol ha oki, pour une conneries comme ça ça m'énerve encore plus lol
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
24 avril 2003 à 22:34
J'ai corrigé le programme qui calcule la taille sans les espaces

import java.io.FileInputStream;

class TailleSansEspaces
{
  public static void main(String[] args)
  {
    try
    {
      FileInputStream f= new FileInputStream("fichier.txt");
      byte[] buffer= new byte[102400];
      int aux, taille= 0;

      while( (aux= f.read(buffer, 0, 102400)) > 0 )
      {
        int j, i= 0;
        String s= new String(buffer, 0, aux);

        for(; (j= s.indexOf(' ', i)) >= 0; i= j + 1)
          taille+= j - i;
        taille+= s.length() - i;
      }

      System.out.println("" + taille);
    }
    catch(Throwable eThrow)
    {
      eThrow.printStackTrace();
    }
  }
}



Core Breaker :)
0