CStdioFile
Sınıf
çalışma zamanı işlevi fopen
tarafı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
, LockRange
ve UnlockRange
işlevleri Duplicate
için CStdioFile
desteklenmez.
Bu işlevleri üzerinde CStdioFile
çağırırsanız bir CNotSupportedException
alırsınız.
kullanma CStdioFile
hakkı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
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 fopen
yapı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
, stdout
veya stderr
içerir.
İki parametreli oluşturucu bir CStdioFile
nesne oluşturur ve verilen yola sahip ilgili dosyayı açar.
veya lpszFileName
iç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 fopen
tarafı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 nMax
kadar 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 nMax
daha 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çisilOff
baytlarını dosyanın başından ileriye taşıyın.CFile::current
: Dosya işaretçisilOff
baytlarını dosyadaki geçerli konumdan taşıyın.CFile::end
: Dosya işaretçisilOff
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 fseek
temel 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::Write
kullanı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