2009-09-09 9 views
0

im faire une application dans laquelle je diviser un fichier wmv et le transférer à otherlocation (en kbs 'x') .après le transfert se termine le fichier ne joue pas, il donne un message sous le format n'est pas supporté. Y at-il une autre façon de le faire. Sorycomment diviser un fichier wmv

je vais vous expliquer ce que im en ce moment

i a écrit une application à distance, je veux transférer un fichier .wmv d'une machine à l'autre, je veux diviser le .wmv et l'envoyer à la machine distante et j'utilise là.if j'essaye d'envoyer le dossier complet signifie qu'il faudra beaucoup de mémoire qui semble très mauvais. ainsi je veux le diviser et l'envoyer. mais le dossier ne se joue pas il lève une exception le format n'est pas soutenu .

ce qui suit est le code im i faire juste fait dans la machine elle-même (pas de communication à distance):

try 
     { 
      FileStream fswrite = new FileStream("D:\\Movie.wmv", FileMode.Create); 
      int pointer = 1; 
      int bufferlength = 12488; 
      int RemainingLen = 0; 
      int AppLen = 0; 
      FileStream fst = new FileStream("E:\\Movie.wmv", FileMode.Open); 
      int TotalLen = (int)fst.Length; 
      fst.Close(); 
      while (pointer != 0) 
      { 
       byte[] svid = new byte[bufferlength]; 
       using (FileStream fst1 = new FileStream("E:\\Movie.wmv", FileMode.Open)) 
       { 
        pointer = fst1.Read(svid, AppLen, bufferlength);       
        fst1.Close();     
       } 
       fswrite.Write(svid, 0, pointer); 
       AppLen += bufferlength; 
       RemainingLen = TotalLen-AppLen; 
       if(RemainingLen < bufferlength) 
       { 
        byte[] svid1 = new byte[RemainingLen]; 
        using (FileStream fst2 = new FileStream("E:\\Movie.wmv", FileMode.Open)) 
        {      
         pointer = fst2.Read(svid1, 0, RemainingLen); 
         fst2.Close();     
        } 
        fswrite.Write(svid, 0, pointer); 
        break; 
       } 

      } 

      fswrite.Close(); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
+1

S'il vous plaît expliquer votre partage le fichier, et ce que les messages d'erreur que vous obtenez. Envisagez simplement de diviser le fichier et de l'exécuter localement. C'est toujours une bonne idée de décomposer le problème autant que possible, de sorte que le problème que votre tring à résoudre à un moment donné est aussi gérable que possible. – Jay

+1

Vous ne pouvez pas couper un wmv de moitié. Vous devez trouver une bibliothèque qui peut fonctionner sur wmvs et l'utiliser pour le diviser. – Will

+0

S'il vous plaît noter: le "drapeau/nécessite l'attention du modérateur" est pour les questions administratives - pas pour chercher des réponses. –

Répondre

1

Im va faire le assumtion votre spliting le fichier lorsque votre envoi, et ne pas essayer avoir le wmv dans 3 fichiers différents sur la machine distante.

Lorsque votre envoi du fichier ce que vous faites basiquement est le suivant:
Machine locale
1) Lire 16K octets (ou tout autre numéro que vous preferez)
2) Envoyer ces 16K octets sur le réseau
3) Répétez les étapes ci-dessus jusqu'à ce fait

machine à distance
1) Écouter pour une connexion
2) Obtenir 16k octets
3) Écrire 16k octets
4) Répéter jusqu'à ce que terminé.

Cette méthode fonctionnera, mais comme vous inventez à nouveau la roue, je vous recommande d'utiliser soit quelque chose d'aussi simple que File.Copy (fonctionne bien sur le réseau) ou si cela ne répond pas à vos besoins en utilisant un client FTP/solution serveur (Beaucoup d'exemples C# sur le net qui peuvent être hébergés dans votre application).

+0

Ensuite, il y a un bug dans votre code. Vous devrez poster un code si vous voulez que nous le regardions – EKS

0

J'ai essayé

private void Splitinthread() 
    { 
     int bufferlength = 2048; 
     int pointer = 1; 
     int offset = 0; 
     int length = 0; 
     byte[] buff = new byte[2048]; 
     FileStream fstwrite = new FileStream("D:\\TEST.wmv", FileMode.Create); 
     FileStream fst2 = new FileStream("E:\\karthi.wmv", FileMode.Open); 
     int Tot_Len = (int)fst2.Length; 
     int Remain_Buff = 0; 
     //Stream fst = File.OpenRead("E:\\karth.wmv"); 

     while (pointer != 0) 
     { 
      try 
      { 

       fst2.Read(buff, 0, bufferlength); 
       fstwrite.Write(buff, 0, bufferlength); 
       offset += bufferlength; 
       Remain_Buff = Tot_Len - offset; 
       Fileprogress.Value = CalculateProgress(offset, Tot_Len); 
       if (Remain_Buff < bufferlength) 
       { 
        byte[] buff1 = new byte[Remain_Buff]; 
        pointer = fst2.Read(buff1, 0, Remain_Buff); 
        fstwrite.Write(buff1, 0, pointer); 
        Fileprogress.Value = CalculateProgress(offset, Tot_Len); 
        fstwrite.Close(); 
        fst2.Close(); 
        break; 
       } 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     MessageBox.Show("Completed"); 
    } 
Questions connexes