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

Windows Forms Discussion :

[C# 2.0] Création d'un nouveau type de fichier


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut [C# 2.0] Création d'un nouveau type de fichier
    Bonjour à tous

    J'aimerais créer un format de fichier "bien à moi"
    En fait ca serait un fichier qui, dans un premier temps, contiendrai 4 fichiers (2 modèles 3D, une image et un XML), le soucis c'est que les Stream et moi ca fait 2 et que je sais pas vraiment comment m'y prendre...

    Enfin, il me faudrait dans le header l'offset des différents fichiers, ca je le sais, mais je sais pas comment coder l'enregistrement/lecture de ce fichier... Honte sur moi

    Bref, si vous pouviez me guider ca serait cool
    Merci à vous

    PS: Dans un second temps ça serait pas mal de pouvoir compresser ce fichier ensuite, alors là, c'est encore plus flou pour moi)

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Commence par etudier le framework et ensuite tu pourras te lancer la dedans...

    Sinon, une idée pour ton bazar...

    TU peux tres bien faire un fichier avec une sérialisation binaire (regarde dans l'aide MSDN pour avoir plus d'info)

    The Monz, Toulouse

  3. #3
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Merci pour ta réponse

    Depuis le temps le framework je le connais C'est juste les Stream que j'avais pas trop étudié...

    La sérialisation binaire je connais mais ca n'aurait pas été adapté a mon cas car ca m'aurait obligé a créer les objets avant d'enregistrer le fichier, alors que je souhaitais juste y stocker les fichiers eux-même.

    Mais j'ai trouvé la solution

    private void Save(string Path)
    {
    FileStream fs = new FileStream(Path, FileMode.Create, FileAccess.Write);
    BinaryWriter bw = new BinaryWriter (fs);

    Stream Infos = Item.SaveToStream();
    FileStream XFile1 = new FileStream(tbCX1File.Text, FileMode.Open);
    FileStream XFile2 = new FileStream(tbCX2File.Text, FileMode.Open);
    FileStream PNGFile = new FileStream(tbCPNGFile.Text, FileMode.Open);
    byte[] InfosBytes = new byte[Infos.Length];
    byte[] X1Bytes = new byte[XFile1.Length];
    byte[] X2Bytes = new byte[XFile2.Length];
    byte[] PNGBytes = new byte[PNGFile.Length];
    Infos.Read(InfosBytes, 0, (int)Infos.Length);
    XFile1.Read(X1Bytes, 0, (int)XFile1.Length);
    XFile2.Read(X2Bytes, 0, (int)XFile2.Length);
    PNGFile.Read(PNGBytes, 0, (int)PNGFile.Length);

    bw.Write((int)Infos.Length);
    bw.Write((int)XFile1.Length);
    bw.Write((int)XFile2.Length);
    bw.Write((int)PNGFile.Length);
    bw.Write(InfosBytes);
    bw.Write(X1Bytes);
    bw.Write(X2Bytes);
    bw.Write(PNGBytes);

    bw.Close();
    fs.Close();
    fs.Dispose();
    }
    Plus qu'a lire les 4 int du début du fichier pour connaitre les offset des différents fichiers stockés

    Voilà si ca peut servir a quelqu'un

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    juste en complément :

    Il serait "judicieux" de mettre une structure plus "évolutive" dans ton en-tête de fichier car ta solution est tres adaptée à ton problème, mais tu pourrais généraliser en faisant un truc du genre :

    Entete =

    1er Octet = Nbre de fichiers
    et ensuite sur des int ou long int (on ne sait jamais) l'offset des données (comme tu le fais)

    En rajoutant le 1octet définissant le nombre de fichier, tu seras "un peu" plus
    evolutifs en terme d'utilisation..

    Et dans le propotype de Save() je mettrais 2 parametres :

    1/ String de destination
    2/ List<String> des fichiers ou bien List<Byte[]> comme ca, ta fonction
    save sera vraiment independante du contexte puisque tu te conteteras de
    lui passer une liste d'octets... ou de fichiers à inclure ensemble

    C'était une idée comme ça

    The Monz , Toulouse

  5. #5
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Pas bête, merci

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

Discussions similaires

  1. Création d'un nouveau type: table of et %Rowtype
    Par wangying dans le forum PL/SQL
    Réponses: 1
    Dernier message: 01/02/2013, 09h32
  2. Créer un nouveau type de fichiers
    Par troumad dans le forum Applications et environnements graphiques
    Réponses: 14
    Dernier message: 04/04/2011, 21h03
  3. [À télécharger] Créer un nouveau type de fichier
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 13/11/2010, 19h48
  4. automatise la creation d'un nouveau type de fichier
    Par dmichel dans le forum Windows
    Réponses: 13
    Dernier message: 16/09/2007, 14h02
  5. créer un nouveau type de fichier
    Par ryoussef19 dans le forum C++/CLI
    Réponses: 5
    Dernier message: 24/08/2007, 12h14

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