Aracılığıyla paylaş


CStdioFile Sınıf

çalışma zamanı işlevi fopentarafından açılan bir C çalışma zamanı akış dosyasını temsil eder.

Sözdizimi

class CStdioFile : public CFile

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CStdioFile::CStdioFile CStdioFile Bir yol veya dosya işaretçisinden nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CStdioFile::Open Aşırı yüklendi. Open, varsayılan CStdioFile oluşturucu (Geçersiz Kılmalar CFile::Open) ile kullanılmak üzere tasarlanmıştır.
CStdioFile::ReadString Tek bir metin satırını okur.
CStdioFile::Seek Geçerli dosya işaretçisini konumlandırın.
CStdioFile::WriteString Tek bir metin satırı yazar.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CStdioFile::m_pStream Açık bir dosyanın işaretçisini içerir.

Açıklamalar

Akış dosyaları arabelleğe alınır ve metin modunda (varsayılan) veya ikili modda açılabilir.

Metin modu, satır başı besleme çiftleri için özel işleme sağlar. Metin modu CStdioFile nesnesine satır akışı (yeni satır) karakteri (0x0A) yazdığınızda, bayt çifti (0x0D, 0x0A) dosyaya gönderilir. Okuduğunuzda, bayt çifti (0x0D, 0x0A) tek bir 0x0A bayt'a çevrilir.

CFile, LockRangeve UnlockRange işlevleri Duplicateiçin CStdioFiledesteklenmez.

Bu işlevleri üzerinde CStdioFileçağırırsanız bir CNotSupportedExceptionalırsınız.

kullanma CStdioFilehakkında daha fazla bilgi için, Çalışma Zamanı Kitaplığı Başvurusu'nda MFC'deki Dosyalar ve Dosya İşleme makalelerine bakın.

Devralma Hiyerarşisi

CObject

CFile

CStdioFile

Gereksinimler

Üstbilgi: afx.h

CStdioFile::CStdioFile

Bir CStdioFile nesneyi oluşturur ve başlatır.

CStdioFile();
CStdioFile(CAtlTransactionManager* pTM);
CStdioFile(FILE* pOpenStream);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags);

CStdioFile(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CAtlTransactionManager* pTM);

Parametreler

pOpenStream
C çalışma zamanı işlevine fopenyapılan bir çağrı tarafından döndürülen dosya işaretçisini belirtir.

lpszFileName
İstenen dosyanın yolu olan bir dize belirtir. Yol göreli veya mutlak olabilir.

nOpenFlags
Dosya oluşturma, dosya paylaşımı ve dosya erişim modları seçeneklerini belirtir. Bit düzeyinde OR ( | ) işlecini kullanarak birden çok seçenek belirtebilirsiniz.

Bir dosya erişim modu seçeneği gereklidir; diğer modlar isteğe bağlıdır. Mod seçeneklerinin ve diğer bayrakların listesi için bkz CFile::CFile . MFC sürüm 3.0 ve sonraki sürümlerde paylaşım bayraklarına izin verilir.

pTM
Nesne işaretçisi CAtlTransactionManager .

Açıklamalar

Varsayılan oluşturucu nesneye CStdioFile dosya eklemez. Bu oluşturucuyu kullanırken, bir dosyayı açmak ve nesnesine eklemek için CStdioFile yöntemini kullanmanız CStdioFile::Open gerekir.

Tek parametreli oluşturucu nesneye CStdioFile açık bir dosya akışı ekler. İzin verilen işaretçi değerleri önceden tanımlanmış giriş/çıkış dosyası işaretçilerini stdin, stdoutveya stderriçerir.

İki parametreli oluşturucu bir CStdioFile nesne oluşturur ve verilen yola sahip ilgili dosyayı açar.

veya lpszFileNameiçin pOpenStream geçirirsenizNULL, oluşturucu bir CInvalidArgException*oluşturur.

Dosya açılamıyor veya oluşturulamıyorsa, oluşturucu bir CFileException*oluşturur.

Örnek

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

Veri m_pStream üyesi, C çalışma zamanı işlevi fopentarafından döndürülen açık bir dosyanın işaretçisidir.

FILE* m_pStream;

Açıklamalar

NULL Dosyanın hiç açılmamış veya kapatılmış olması gerekir.

CStdioFile::Open

Aşırı yüklendi. Open, varsayılan CStdioFile oluşturucuyla kullanılmak üzere tasarlanmıştır.

virtual BOOL Open(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CAtlTransactionManager* pTM,
    CFileException* pError = NULL);

Parametreler

lpszFileName
İstenen dosyanın yolu olan bir dize. Yol göreli veya mutlak olabilir.

nOpenFlags
Paylaşım ve erişim modu. Dosyayı açarken gerçekleştirecek eylemi belirtir. Bit düzeyinde OR (|) işlecini kullanarak seçenekleri birleştirebilirsiniz. Bir erişim izni ve bir paylaşım seçeneği gereklidir; modeCreate ve modeNoInherit modları isteğe bağlıdır.

pError
Başarısız bir işlemin durumunu alacak mevcut bir dosya özel durum nesnesine yönelik bir işaretçi.

pTM
Nesne CAtlTransactionManager işaretçisi.

Dönüş Değeri

TRUE başarılı olursa; aksi takdirde FALSE.

Açıklamalar

CStdioFile::ReadString

Nesneyle CStdioFile ilişkilendirilmiş dosyadan metin verilerini -1 karakter sınırına nMaxkadar bir arabelleğe okur.

virtual LPTSTR ReadString(
    LPTSTR lpsz,
    UINT nMax);

virtual BOOL ReadString(CString& rString);

Parametreler

lpsz
Null olarak sonlandırılan bir metin dizesi alacak kullanıcı tarafından sağlanan arabelleğe yönelik bir işaretçi belirtir.

nMax
Sonlandırıcı null dahil olmak üzere arabelleğe yazacak lpsz karakter sayısı üst sınırını belirtir.

rString
İşlev döndürdüğünde dizeyi içerecek bir CString nesneye başvuru.

Dönüş Değeri

Metin verilerini içeren arabelleğe yönelik bir işaretçi. NULL herhangi bir veri okunmadan dosya sonuna ulaşıldıysa; veya boole ise, FALSE herhangi bir veri okunmadan dosya sonuna ulaşıldıysa.

Açıklamalar

Okuma ilk yeni satır karakteri tarafından durdurulur. Bu durumda, -1 karakterden nMaxdaha az karakter okunduysa, arabellekte yeni satır karakteri depolanır. Her iki durumda da null karakter ('\0') eklenir.

CFile::Read metin modu girişi için de kullanılabilir, ancak satır başı besleme çiftinde sonlandırılmaz.

Not

CString Bu işlevin sürümü varsa öğesini kaldırır'\n'; LPTSTR sürüm kaldırmaz.

Örnek

CStdioFile f(stdin);
TCHAR buf[100];

f.ReadString(buf, 99);

CStdioFile::Seek

İşaretçiyi daha önce açılmış bir dosyada yeniden konumlandırır.

virtual ULONGLONG Seek(
    LONGLONG lOff,
    UINT nFrom);

Parametreler

lOff
İşaretçinin taşınacak bayt sayısı.

nFrom
İşaretçi hareketi modu. Aşağıdaki değerlerden biri olmalıdır:

  • CFile::begin: Dosya işaretçisi lOff baytlarını dosyanın başından ileriye taşıyın.

  • CFile::current: Dosya işaretçisi lOff baytlarını dosyadaki geçerli konumdan taşıyın.

  • CFile::end: Dosya işaretçisi lOff baytlarını dosyanın sonundan taşıyın. lOff Var olan dosyayı aramak için negatif olması gerektiğini unutmayın; pozitif değerler dosyanın sonunu geçmiş olarak arar.

Dönüş Değeri

İstenen konum yasalsa, Seek dosyanın başından yeni bayt uzaklığını döndürür. Aksi takdirde, dönüş değeri tanımsız olur ve bir CFileException nesne oluşturulur.

Açıklamalar

İşlev, Seek işaretçiyi kesinlikle veya göreli olarak belirtilen miktarda taşıyarak dosyanın içeriğine rastgele erişime izin verir. Arama sırasında aslında hiçbir veri okunmaz. İstenen konum dosyanın boyutundan büyükse, dosya uzunluğu bu konuma genişletilir ve hiçbir özel durum oluşturulmayacak.

Bir dosya açıldığında, dosya işaretçisi dosyanın başlangıcı olan 0 uzaklığında konumlandırılır.

uygulamasının Seek bu uygulaması, Çalışma Zamanı Kitaplığı (CRT) işlevini fseektemel alır. Metin modunda açılan akışlarda kullanımıyla Seek ilgili çeşitli sınırlar vardır. Daha fazla bilgi için bkz. fseek, _fseeki64.

Örnek

Aşağıdaki örnekte, işaretçiyi dosyanın başından 1000 bayt taşımak için nasıl kullanılacağı Seek gösterilmektedir cfile . Verileri okumadığını, Seek bu nedenle daha sonra verileri okumak için çağırmanız CStdioFile::ReadString gerektiğini unutmayın.

CStdioFile cfile(_T("Stdio_Seek_File.dat"), CFile::modeWrite |
   CFile::modeCreate);
LONGLONG lOff = 1000;
ULONGLONG lActual = cfile.Seek(lOff, CFile::begin);

CStdioFile::WriteString

Bir arabellekten nesneyle ilişkili dosyaya CStdioFile veri yazar.

virtual void WriteString(LPCTSTR lpsz);

Parametreler

lpsz
Null olarak sonlandırılan bir dize içeren arabelleğe yönelik bir işaretçi belirtir.

Açıklamalar

Sonlandırıcı null karakter ( \0) dosyaya yazılmaz. Bu yöntem dosyasındaki lpsz yeni satır karakterlerini satır başı satır besleme çifti olarak yazar.

Bir dosyaya null olarak sonlandırılmamış veriler yazmak istiyorsanız veya CFile::WritekullanınCStdioFile::Write.

Parametresi için lpsz belirtirseniz NULL bu yöntem bir CInvalidArgException* oluşturur.

Bu yöntem, dosya sistemi hatalarına yanıt olarak bir CFileException* oluşturur.

Örnek

CStdioFile f(stdout);
TCHAR buf[] = _T("test string");

f.WriteString(buf);

Ayrıca bkz.

CFile Sınıf
Hiyerarşi Grafiği
CFile Sınıf
CFile::Duplicate
CFile::LockRange
CFile::UnlockRange
CNotSupportedException Sınıf