Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe
Représente un fichier de flux d’exécution C tel qu’ouvert par la fonction fopend’exécution.
Syntaxe
class CStdioFile : public CFile
Membres
Constructeurs publics
| Nom | Descriptif |
|---|---|
CStdioFile::CStdioFile |
Construit un objet à partir d’un CStdioFile chemin d’accès ou d’un pointeur de fichier. |
Méthodes publiques
| Nom | Descriptif |
|---|---|
CStdioFile::Open |
Surcharge. Open est conçu pour une utilisation avec le constructeur par défaut CStdioFile (remplacements CFile::Open). |
CStdioFile::ReadString |
Lit une seule ligne de texte. |
CStdioFile::Seek |
Positionne le pointeur de fichier actuel. |
CStdioFile::WriteString |
Écrit une seule ligne de texte. |
Membres de données publics
| Nom | Descriptif |
|---|---|
CStdioFile::m_pStream |
Contient un pointeur vers un fichier ouvert. |
Notes
Les fichiers de flux sont mis en mémoire tampon et peuvent être ouverts en mode texte (par défaut) ou en mode binaire.
Le mode texte fournit un traitement spécial pour les paires de saut de ligne de retour chariot. Lorsque vous écrivez un caractère de flux de ligne (nouvelle ligne) (0x0A) dans un objet en mode CStdioFile texte, la paire d’octets (0x0D, 0x0A) est envoyée au fichier. Lorsque vous lisez, la paire d’octets (0x0D, 0x0A) est traduite en un octet de 0x0A unique.
Les CFile fonctions Duplicate, LockRangeet UnlockRange ne sont pas prises en charge pour CStdioFile.
Si vous appelez ces fonctions sur un CStdioFile, vous obtiendrez un CNotSupportedException.
Pour plus d’informations sur l’utilisationCStdioFile, consultez les articles Fichiers dans MFC et Gestion des fichiers dans la référence de la bibliothèque d’exécution.
Hiérarchie d'héritage
CStdioFile
Spécifications
En-tête :afx.h
CStdioFile::CStdioFile
Construit et initialise un objet CStdioFile.
CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags);
CStdioFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM);
Paramètres
pOpenStream
Spécifie le pointeur de fichier retourné par un appel à la fonction fopend’exécution C.
lpszFileName
Spécifie une chaîne qui correspond au chemin d’accès au fichier souhaité. Le chemin peut être relatif ou absolu.
nOpenFlags
Spécifie les options de création de fichiers, de partage de fichiers et de modes d’accès aux fichiers. Vous pouvez spécifier plusieurs options à l’aide de l’opérateur OR ( | ) au niveau du bit.
Une option de mode d’accès aux fichiers est requise ; d’autres modes sont facultatifs. Consultez CFile::CFile la liste des options de mode et d’autres indicateurs. Dans MFC version 3.0 et ultérieure, les indicateurs de partage sont autorisés.
pTM
Pointeur vers l’objet CAtlTransactionManager .
Notes
Le constructeur par défaut n’attache pas de fichier à l’objet CStdioFile . Lorsque vous utilisez ce constructeur, vous devez utiliser la CStdioFile::Open méthode pour ouvrir un fichier et l’attacher à l’objet CStdioFile .
Le constructeur à paramètre unique attache un flux de fichiers ouvert à l’objet CStdioFile . Les valeurs de pointeur autorisées incluent les pointeurs stdinde fichier d’entrée/sortie prédéfinis, stdoutou stderr.
Le constructeur à deux paramètres crée un CStdioFile objet et ouvre le fichier correspondant avec le chemin d’accès donné.
Si vous passez NULL pour l’un ou l’autre pOpenStreamlpszFileName, le constructeur lève un CInvalidArgException*.
Si le fichier ne peut pas être ouvert ou créé, le constructeur lève un CFileException*.
Exemple
TCHAR* pFileName = _T("CStdio_File.dat");
CStdioFile f1;
if(!f1.Open(pFileName, CFile::modeCreate | CFile::modeWrite
| CFile::typeText))
{
TRACE(_T("Unable to open file\n"));
}
CStdioFile f2(stdout);
try
{
CStdioFile f3( pFileName,
CFile::modeCreate | CFile::modeWrite | CFile::typeText );
}
catch(CFileException* pe)
{
TRACE(_T("File could not be opened, cause = %d\n"),
pe->m_cause);
pe->Delete();
}
CStdioFile::m_pStream
Le m_pStream membre de données est le pointeur vers un fichier ouvert tel qu’il est retourné par la fonction fopend’exécution C.
FILE* m_pStream;
Notes
C’est NULL si le fichier n’a jamais été ouvert ou a été fermé.
CStdioFile::Open
Surcharge. Open est conçu pour une utilisation avec le constructeur par défaut CStdioFile .
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CFileException* pError = NULL);
virtual BOOL Open(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM,
CFileException* pError = NULL);
Paramètres
lpszFileName
Chaîne qui est le chemin d’accès au fichier souhaité. Le chemin peut être relatif ou absolu.
nOpenFlags
Mode de partage et d’accès. Spécifie l’action à entreprendre lors de l’ouverture du fichier. Vous pouvez combiner des options à l’aide de l’opérateur OR (|) au niveau du bit. Une autorisation d’accès et une option de partage sont requises ; les modes modeCreate et modeNoInherit sont facultatifs.
pError
Pointeur vers un objet d’exception de fichier existant qui recevra l’état d’une opération ayant échoué.
pTM
Pointeur vers un CAtlTransactionManager objet.
Valeur de retour
TRUE en cas de réussite ; sinon, FALSE.
Notes
CStdioFile::ReadString
Lit les données texte dans une mémoire tampon, jusqu’à une limite de nMax-1 caractères, à partir du fichier associé à l’objet CStdioFile .
virtual LPTSTR ReadString(
LPTSTR lpsz,
UINT nMax);
virtual BOOL ReadString(CString& rString);
Paramètres
lpsz
Spécifie un pointeur vers une mémoire tampon fournie par l’utilisateur qui recevra une chaîne de texte terminée par null.
nMax
Spécifie le nombre maximal de caractères à écrire dans la lpsz mémoire tampon, y compris la valeur Null de fin.
rString
Référence à un CString objet qui contiendra la chaîne lorsque la fonction est retournée.
Valeur de retour
Pointeur vers la mémoire tampon contenant les données de texte.
NULL si la fin du fichier a été atteinte sans lire de données ; ou si booléen, FALSE si la fin du fichier a été atteinte sans lire de données.
Notes
La lecture est arrêtée par le premier caractère de nouvelle ligne. Si, dans ce cas, moins nMaxde -1 caractères ont été lus, un caractère de nouvelle ligne est stocké dans la mémoire tampon. Un caractère Null ('\0') est ajouté dans les deux cas.
CFile::Read est également disponible pour l’entrée en mode texte, mais elle ne se termine pas sur une paire de flux de retour chariot.
Remarque
La CString version de cette fonction supprime le '\n' cas échéant ; la version ne l’est LPTSTR pas.
Exemple
CStdioFile f(stdin);
TCHAR buf[100];
f.ReadString(buf, 99);
CStdioFile::Seek
Repositionne le pointeur dans un fichier précédemment ouvert.
virtual ULONGLONG Seek(
LONGLONG lOff,
UINT nFrom);
Paramètres
lOff
Nombre d’octets pour déplacer le pointeur.
nFrom
Mode de déplacement du pointeur. Il doit s’agir de l’une des valeurs suivantes :
CFile::begin: déplacez les octets du pointeurlOffde fichier vers l’avant à partir du début du fichier.CFile::current: Déplacez les octets du pointeurlOffde fichier de la position actuelle dans le fichier.CFile::end: déplacez les octets du pointeurlOffde fichier à partir de la fin du fichier. Notez qu’illOffdoit être négatif pour rechercher dans le fichier existant ; les valeurs positives recherchent au-delà de la fin du fichier.
Valeur de retour
Si la position demandée est légale, Seek retourne le nouveau décalage d’octets depuis le début du fichier. Sinon, la valeur de retour n’est pas définie et un CFileException objet est levée.
Notes
La Seek fonction autorise l’accès aléatoire au contenu d’un fichier en déplaçant le pointeur d’une quantité spécifiée, absolument ou relativement. Aucune donnée n’est réellement lue pendant la recherche. Si la position demandée est supérieure à la taille du fichier, la longueur du fichier est étendue à cette position et aucune exception n’est levée.
Lorsqu’un fichier est ouvert, le pointeur de fichier est positionné au décalage 0, au début du fichier.
Cette implémentation est basée sur la fonction SeekBibliothèque d’exécution fseek (CRT). Il existe plusieurs limites sur l’utilisation des Seek flux ouverts en mode texte. Pour plus d’informations, consultez fseek, _fseeki64.
Exemple
L’exemple suivant montre comment utiliser Seek pour déplacer le pointeur 1000 octets à partir du début du cfile fichier. Notez que Seek les données ne sont pas lues. Vous devez donc appeler CStdioFile::ReadString par la suite pour lire les données.
CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);
CStdioFile::WriteString
Écrit des données d’une mémoire tampon dans le fichier associé à l’objet CStdioFile .
virtual void WriteString(LPCTSTR lpsz);
Paramètres
lpsz
Spécifie un pointeur vers une mémoire tampon qui contient une chaîne terminée par null.
Notes
Le caractère null de fin (\0) n’est pas écrit dans le fichier. Cette méthode écrit des caractères de ligne dans lpsz le fichier sous la forme d’une paire de flux de retour chariot.
Si vous souhaitez écrire des données qui ne sont pas terminées par null dans un fichier, utilisez CStdioFile::Write ou CFile::Write.
Cette méthode lève une CInvalidArgException* valeur si vous spécifiez NULL le lpsz paramètre.
Cette méthode lève une CFileException* réponse aux erreurs du système de fichiers.
Exemple
CStdioFile f(stdout);
TCHAR buf[] = _T("test string");
f.WriteString(buf);
Voir aussi
CFile Classe
Graphique hiérarchique
CFile Classe
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException Classe