IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Fichiers unix windows


Sujet :

C#

  1. #1
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut Fichiers unix windows
    Y a-t-il un outil pour
    1. déterminer qu'un fichier à des fin de ligne unix (10)
    2. transformer facilement ce fichier avec des fin de ligne windows (13 10)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par ppphil Voir le message
    Y a-t-il un outil pour
    1. déterminer qu'un fichier à des fin de ligne unix (10)
    Notepad
    S'il y a des fin de ligne Unix tu t'en rendra compte tout de suite...
    Citation Envoyé par ppphil Voir le message
    2. transformer facilement ce fichier avec des fin de ligne windows (13 10)
    Visual Studio peut le faire (dialogue Enregistrer sous, Enregistrer avec codage (petite flèche sur le bouton Enregistrer))

    Sinon, la plupart des éditeurs de texte un minimum évolués permettent de faire ça (Editplus, UltraEdit...)

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    A priori le caractère 10 n'est pas utilisé seul sous Windows.
    Donc tu peut le faire en copiant par exemple d'un flux source qui contient le fichier dont tu ignores tout vers le flux de destination qui contient ton fichier texte avec les bonnes fin de lignes. Pour chaque caractère si c'est chr(10) tu vérifies qu'avant il y avait un chr(13) et si ce n'est pas le cas tu écris chr(13) chr(10), sinon tu met juste le chr(10) ...

  4. #4
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    C'est en fait ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    if (IsUnixFile("E:\\Test.txt"))
          {
            s = File.ReadAllLines("E:\\Test.txt", Encoding.Default);
            File.WriteAllLines("E:\\Test.txt", s, Encoding.Default);
          }
     
    private bool IsUnixFile(string aFile)
        {
          FileStream fs;
          int Car;
          int OldCar = 0;
     
          fs = new FileStream(aFile, FileMode.Open);
          Car = fs.ReadByte();
          while ((Car != 10) && (Car != 0))
          {
            OldCar = Car;
            Car = fs.ReadByte();
          }
          fs.Close();
          if (OldCar == 13)
          {
            return false;
          }
          else
          {
            return true;
          }
        }
    Le File.WriteAllLines remet automatiquement des fin de ligne Win

    Bonne journée à tous !!

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Pense au tag si c'est résolu... merci

  6. #6
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Pense au tag si c'est résolu... merci
    Ca vient, ça vient...
    Il faut que je fasse encore une correction dans la fonction IsUnixFile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public static bool IsUnixFile(string aFile)
        {
          FileStream fs = null;
          int Car;
          int OldCar = 0;
    
          try
          {
            fs = new FileStream(aFile, FileMode.Open);
            Car = fs.ReadByte();
            while ((Car != 10) && (Car != -1))
            {
              OldCar = Car;
              Car = fs.ReadByte();
            }
          }
          finally
          {
            if (fs != null)
            {
              fs.Close();
            }
          }
          if ((OldCar == 13) || (Car == -1))
          {
            return false;
          }
          else
          {
            return true;
          }
        }
    Le readbyte retourne -1 si fin de fichier et non pas 0..
    Pis ne pas oublier de fermer dans tous les cas le FileStream....
    On considère que si on n'a pas de fin de ligne en arrivant à la fin du fichier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((OldCar == 13) || (Car == -1))
    on est pas dans un fichier unix...

    Salut à tous et bonne journée !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment convertir des fichiers texte Windows vers Unix
    Par hornetbzz dans le forum Contribuez
    Réponses: 17
    Dernier message: 11/02/2014, 14h46
  2. Traitement de fichiers Unix sous Windows avec AWK
    Par michel baily dans le forum Shell et commandes POSIX
    Réponses: 1
    Dernier message: 06/10/2011, 10h45
  3. Réponses: 1
    Dernier message: 26/03/2010, 13h11
  4. Réponses: 2
    Dernier message: 03/11/2009, 13h46
  5. probleme portage Unix --> Windows
    Par casier dans le forum MFC
    Réponses: 5
    Dernier message: 22/01/2004, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo