2010-07-25 5 views
2

J'ai quelques questions sur l'édition de fichiers avec C#.C# Travailler avec des fichiers/octets

J'ai réussi à lire un fichier dans un octet []. Comment puis-je obtenir le code ASCII de chaque octet et le montrer dans la zone de texte de mon formulaire?

De même, comment puis-je modifier les octets, puis les réécrire dans un fichier?

Par exemple:

J'ai un dossier et je sais que les trois premiers octets sont des lettres. Comment puis-je changer la deuxième lettre en "A", puis sauvegarder le fichier?

Merci!

Répondre

1

Je ne peux que supposer que vous voulez vous entraîner à écrire dans/depuis des fichiers avec l'octet. Vous devez regarder dans la classe BitConverter, il y a beaucoup d'aide là-bas pour cette classe. Pour lire une valeur, vous devez prendre chaque octet dans un octet []. Une fois que vous avez votre byte [], cela ressemblerait à ceci.

string s = BitConverter.ToString(byteArray); 

Vous pouvez ensuite effectuer vos réglages à votre valeur de chaîne, pour écrire dans le fichier que vous souhaitez utiliser la méthode GetBytes.

byte[] newByteArray = BitConveter.GetBytes(s); 

Ensuite, vous pouvez écrire vos octets dans votre fichier.

1

Si le fichier est ASCII, alors chaque octet EST le code ASCII. Imprimer la valeur de l'octet, disons, une étiquette, est aussi simple que cela.

Si vous avez lu votre fichier dans byte[] file;

label1.Text = file[1].ToString(); 

Pour changer la deuxième lettre à A:

file[1] = (byte)'A'; 

Ou

file[1] = (byte)(int)'A'; 

Je ne sais pas, je ne Ne pas avoir C# sur mon Mac pour tester. Mais sérieusement, s'il s'agit d'un fichier texte, il vaut mieux le lire en texte, pas en byte[]. Et vous auriez probablement eu envie de le manipuler à l'aide d'un StringBuilder

Tout d'abord, à read it in as a string:

// Read the file as one string. 
System.IO.StreamReader myFile = 
    new System.IO.StreamReader("c:\\test.txt"); 

string myString = myFile.ReadToEnd(); 

myFile.Close(); 

Et cela fonctionnera si le fichier est unicode aussi bien.

Ensuite, vous pouvez obtenir les valeurs Unicode (qui pour la plupart des caractères latins est la même que la valeur ASCII) comme suit: int value = (int)myString[5]; ou plus.

Vous pouvez alors écrire de nouveau dans un fichier comme ceci:

System.IO.File.WriteAllText("c:\\test.txt", myString); 

Si vous allez faire des modifications lourdes sur le texte, vous devez utiliser un StringBuilder, sinon, les opérations normales de chaînes serait bien.

+0

Voir aussi "Fichier.ReadAllText "," File.ReadAllLines "," Comment: lire le texte d'un fichier "," Comment: écrire du texte dans un fichier "sur MSDN. – adf88