Inexplicable

Signaler
Messages postés
67
Date d'inscription
samedi 5 janvier 2002
Statut
Membre
Dernière intervention
2 juin 2005
-
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
-
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
A voir également:

8 réponses

Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)
Messages postés
67
Date d'inscription
samedi 5 janvier 2002
Statut
Membre
Dernière intervention
2 juin 2005

lol ok c'est bien, mais maintenant j'arriverai pas à le reprendre ton code... au fait, les \r ils servent à koi?
Messages postés
67
Date d'inscription
samedi 5 janvier 2002
Statut
Membre
Dernière intervention
2 juin 2005

ha oui c'est bon je l'ai mis... tu es fatigué ou alors j'pe encore te poser une énigme? lol
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
Dis toujours

Core Breaker :)
Messages postés
67
Date d'inscription
samedi 5 janvier 2002
Statut
Membre
Dernière intervention
2 juin 2005

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
Messages postés
67
Date d'inscription
samedi 5 janvier 2002
Statut
Membre
Dernière intervention
2 juin 2005

lol ha oki, pour une conneries comme ça ça m'énerve encore plus lol
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)