本文整理汇总了C++中xfile::CFile::Seek方法的典型用法代码示例。如果您正苦于以下问题:C++ CFile::Seek方法的具体用法?C++ CFile::Seek怎么用?C++ CFile::Seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xfile::CFile
的用法示例。
在下文中一共展示了CFile::Seek方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memset
TEST(TestFile, Write)
{
XFILE::CFile *file;
const char str[] = "TestFile.Write test string\n";
char buf[30];
memset(&buf, 0, sizeof(buf));
ASSERT_TRUE((file = XBMC_CREATETEMPFILE("")) != NULL);
file->Close();
ASSERT_TRUE(file->OpenForWrite(XBMC_TEMPFILEPATH(file), true));
EXPECT_EQ((int)sizeof(str), file->Write(str, sizeof(str)));
file->Flush();
EXPECT_EQ(0, file->GetPosition());
file->Close();
ASSERT_TRUE(file->Open(XBMC_TEMPFILEPATH(file)));
EXPECT_EQ(0, file->GetPosition());
EXPECT_EQ((int64_t)sizeof(str), file->Seek(0, SEEK_END));
EXPECT_EQ(0, file->Seek(0, SEEK_SET));
EXPECT_EQ((int64_t)sizeof(str), file->GetLength());
EXPECT_EQ(sizeof(str), file->Read(buf, sizeof(buf)));
file->Flush();
EXPECT_EQ((int64_t)sizeof(str), file->GetPosition());
EXPECT_TRUE(!memcmp(str, buf, sizeof(str)));
file->Close();
EXPECT_TRUE(XBMC_DELETETEMPFILE(file));
}
示例2: while
/* The tests for XFILE::CFileFactory are tested indirectly through
* XFILE::CFile. Since most parts of the VFS require some form of
* network connection, the settings and VFS URLs must be given as
* arguments in the main testsuite program.
*/
TEST_F(TestFileFactory, Read)
{
XFILE::CFile file;
std::string str;
unsigned int size, i;
unsigned char buf[16];
int64_t count = 0;
std::vector<std::string> urls =
CXBMCTestUtils::Instance().getTestFileFactoryReadUrls();
std::vector<std::string>::iterator it;
for (it = urls.begin(); it < urls.end(); ++it)
{
std::cout << "Testing URL: " << *it << std::endl;
ASSERT_TRUE(file.Open(*it));
std::cout << "file.GetLength(): " <<
testing::PrintToString(file.GetLength()) << std::endl;
std::cout << "file.Seek(file.GetLength() / 2, SEEK_CUR) return value: " <<
testing::PrintToString(file.Seek(file.GetLength() / 2, SEEK_CUR)) << std::endl;
std::cout << "file.Seek(0, SEEK_END) return value: " <<
testing::PrintToString(file.Seek(0, SEEK_END)) << std::endl;
std::cout << "file.Seek(0, SEEK_SET) return value: " <<
testing::PrintToString(file.Seek(0, SEEK_SET)) << std::endl;
std::cout << "File contents:" << std::endl;
while ((size = file.Read(buf, sizeof(buf))) > 0)
{
str = StringUtils::Format(" %08llX", count);
std::cout << str << " ";
count += size;
for (i = 0; i < size; i++)
{
str = StringUtils::Format("%02X ", buf[i]);
std::cout << str;
}
while (i++ < sizeof(buf))
std::cout << " ";
std::cout << " [";
for (i = 0; i < size; i++)
{
if (buf[i] >= ' ' && buf[i] <= '~')
std::cout << buf[i];
else
std::cout << ".";
}
std::cout << "]" << std::endl;
}
file.Close();
}
}
示例3: dvd_file_seek
static offset_t dvd_file_seek(void *h, offset_t pos, int whence)
{
if(interrupt_cb(NULL))
return -1;
XFILE::CFile *pFile = (XFILE::CFile *)h;
if(whence == AVSEEK_SIZE)
return pFile->GetLength();
else
return pFile->Seek(pos, whence & ~AVSEEK_FORCE);
}
示例4: memset
TEST_F(TestZipFile, Read)
{
XFILE::CFile file;
char buf[20];
memset(&buf, 0, sizeof(buf));
std::string reffile, strpathinzip;
CFileItemList itemlist;
reffile = XBMC_REF_FILE_PATH("xbmc/filesystem/test/reffile.txt.zip");
CURL zipUrl = URIUtils::CreateArchivePath("zip", CURL(reffile), "");
ASSERT_TRUE(XFILE::CDirectory::GetDirectory(zipUrl, itemlist, "",
XFILE::DIR_FLAG_NO_FILE_DIRS));
EXPECT_GT(itemlist.Size(), 0);
EXPECT_FALSE(itemlist[0]->GetPath().empty());
strpathinzip = itemlist[0]->GetPath();
ASSERT_TRUE(file.Open(strpathinzip));
EXPECT_EQ(0, file.GetPosition());
EXPECT_EQ(1616, file.GetLength());
EXPECT_EQ(sizeof(buf), static_cast<size_t>(file.Read(buf, sizeof(buf))));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_TRUE(file.ReadString(buf, sizeof(buf)));
EXPECT_EQ(39, file.GetPosition());
EXPECT_STREQ("an award-winning fr", buf);
EXPECT_EQ(100, file.Seek(100));
EXPECT_EQ(100, file.GetPosition());
EXPECT_EQ(sizeof(buf), static_cast<size_t>(file.Read(buf, sizeof(buf))));
file.Flush();
EXPECT_EQ(120, file.GetPosition());
EXPECT_TRUE(!memcmp("ent hub for digital ", buf, sizeof(buf) - 1));
EXPECT_EQ(220, file.Seek(100, SEEK_CUR));
EXPECT_EQ(220, file.GetPosition());
EXPECT_EQ(sizeof(buf), static_cast<size_t>(file.Read(buf, sizeof(buf))));
file.Flush();
EXPECT_EQ(240, file.GetPosition());
EXPECT_TRUE(!memcmp("rs, XBMC is a non-pr", buf, sizeof(buf) - 1));
EXPECT_EQ(1596, file.Seek(-(int64_t)sizeof(buf), SEEK_END));
EXPECT_EQ(1596, file.GetPosition());
EXPECT_EQ(sizeof(buf), static_cast<size_t>(file.Read(buf, sizeof(buf))));
file.Flush();
EXPECT_EQ(1616, file.GetPosition());
EXPECT_TRUE(!memcmp("multimedia jukebox.\n", buf, sizeof(buf) - 1));
EXPECT_EQ(-1, file.Seek(100, SEEK_CUR));
EXPECT_EQ(1616, file.GetPosition());
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(sizeof(buf), static_cast<size_t>(file.Read(buf, sizeof(buf))));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(-1, file.Seek(-100, SEEK_SET));
file.Close();
}
示例5: SeekEx
//========================================================================
int64_t CFileURLProtocol::SeekEx(URLContext *h, int64_t pos, int whence)
{
XFILE::CFile *cfile = (XFILE::CFile*)h->priv_data;
// seek to the end of file
if (whence == AVSEEK_SIZE)
pos = cfile->GetLength();
else
pos = cfile->Seek(pos, whence & ~AVSEEK_FORCE);
printf("CFileURLProtocol::SeekEx pos(%lld), whence(%d)\n", pos, whence);
return pos;
}
示例6: memset
TEST(TestRarFile, Read)
{
XFILE::CFile file;
char buf[20];
memset(&buf, 0, sizeof(buf));
CStdString reffile, strrarpath, strpathinrar;
CFileItemList itemlist;
reffile = XBMC_REF_FILE_PATH("xbmc/filesystem/test/reffile.txt.rar");
URIUtils::CreateArchivePath(strrarpath, "rar", reffile, "");
ASSERT_TRUE(XFILE::CDirectory::GetDirectory(strrarpath, itemlist, "",
XFILE::DIR_FLAG_NO_FILE_DIRS));
strpathinrar = itemlist[0]->GetPath();
ASSERT_TRUE(file.Open(strpathinrar));
EXPECT_EQ(0, file.GetPosition());
EXPECT_EQ(1616, file.GetLength());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_TRUE(file.ReadString(buf, sizeof(buf)));
EXPECT_EQ(39, file.GetPosition());
EXPECT_STREQ("an award-winning fr", buf);
EXPECT_EQ(100, file.Seek(100));
EXPECT_EQ(100, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(120, file.GetPosition());
EXPECT_TRUE(!memcmp("ent hub for digital ", buf, sizeof(buf) - 1));
EXPECT_EQ(220, file.Seek(100, SEEK_CUR));
EXPECT_EQ(220, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(240, file.GetPosition());
EXPECT_TRUE(!memcmp("rs, XBMC is a non-pr", buf, sizeof(buf) - 1));
EXPECT_EQ(1596, file.Seek(-(int64_t)sizeof(buf), SEEK_END));
EXPECT_EQ(1596, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(1616, file.GetPosition());
EXPECT_TRUE(!memcmp("multimedia jukebox.\n", buf, sizeof(buf) - 1));
EXPECT_EQ(1716, file.Seek(100, SEEK_CUR));
EXPECT_EQ(1716, file.GetPosition());
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(-1, file.Seek(-100, SEEK_SET));
file.Close();
}
示例7: SeekEx
//========================================================================
int64_t CFileURLProtocol::SeekEx(AML_URLContext *h, int64_t pos, int whence)
{
//CLog::Log(LOGDEBUG, "CFileURLProtocol::SeekEx1 pos(%lld), whence(%d)", pos, whence);
XFILE::CFile *cfile = (XFILE::CFile*)h->priv_data;
whence &= ~AVSEEK_FORCE;
// seek to the end of file
if (pos == -1 || whence == AVSEEK_SIZE)
pos = cfile->GetLength();
else
pos = cfile->Seek(pos, whence);
//CLog::Log(LOGDEBUG, "CFileURLProtocol::SeekEx2 pos(%lld), whence(%d)", pos, whence);
return pos;
}
示例8: Load
bool CKaraokeLyricsTextKAR::Load()
{
XFILE::CFile file;
bool succeed = true;
m_reportedInvalidVarField = false;
// Clear the lyrics array
clearLyrics();
if ( !file.Open( m_midiFile ) )
return false;
m_midiSize = (unsigned int) file.GetLength();
if ( !m_midiSize )
return false; // shouldn't happen, but
file.Seek( 0, SEEK_SET );
m_midiData = new unsigned char [ m_midiSize ];
// Read the whole file
if ( !m_midiData || file.Read( m_midiData, m_midiSize) != m_midiSize )
return false;
file.Close();
// Parse MIDI
try
{
parseMIDI();
}
catch ( const char * p )
{
CLog::Log( LOGERROR, "KAR lyrics loader: cannot load file: %s", p );
succeed = false;
}
delete [] m_midiData;
m_midiData = 0;
return succeed;
}
示例9: memset
TEST(TestRarFile, NormalRAR)
{
XFILE::CFile file;
char buf[20];
memset(&buf, 0, sizeof(buf));
CStdString reffile, strrarpath, strpathinrar;
CFileItemList itemlist, itemlistemptydir;
struct __stat64 stat_buffer;
reffile = XBMC_REF_FILE_PATH("xbmc/filesystem/test/refRARnormal.rar");
URIUtils::CreateArchivePath(strrarpath, "rar", reffile, "");
ASSERT_TRUE(XFILE::CDirectory::GetDirectory(strrarpath, itemlist));
itemlist.Sort(SORT_METHOD_FULLPATH, SortOrderAscending);
/* /reffile.txt */
strpathinrar = itemlist[1]->GetPath();
ASSERT_TRUE(StringUtils::EndsWith(strpathinrar, "/reffile.txt", true));
EXPECT_EQ(0, XFILE::CFile::Stat(strpathinrar, &stat_buffer));
EXPECT_TRUE((stat_buffer.st_mode & S_IFMT) | S_IFREG);
ASSERT_TRUE(file.Open(strpathinrar));
EXPECT_EQ(0, file.GetPosition());
EXPECT_EQ(1616, file.GetLength());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_TRUE(file.ReadString(buf, sizeof(buf)));
EXPECT_EQ(39, file.GetPosition());
EXPECT_STREQ("an award-winning fr", buf);
EXPECT_EQ(100, file.Seek(100));
EXPECT_EQ(100, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(120, file.GetPosition());
EXPECT_TRUE(!memcmp("ent hub for digital ", buf, sizeof(buf) - 1));
EXPECT_EQ(220, file.Seek(100, SEEK_CUR));
EXPECT_EQ(220, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(240, file.GetPosition());
EXPECT_TRUE(!memcmp("rs, XBMC is a non-pr", buf, sizeof(buf) - 1));
EXPECT_EQ(1596, file.Seek(-(int64_t)sizeof(buf), SEEK_END));
EXPECT_EQ(1596, file.GetPosition());
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(1616, file.GetPosition());
EXPECT_TRUE(!memcmp("multimedia jukebox.\n", buf, sizeof(buf) - 1));
EXPECT_EQ(1716, file.Seek(100, SEEK_CUR));
EXPECT_EQ(1716, file.GetPosition());
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(sizeof(buf), file.Read(buf, sizeof(buf)));
file.Flush();
EXPECT_EQ(20, file.GetPosition());
EXPECT_TRUE(!memcmp("About\n-----\nXBMC is ", buf, sizeof(buf) - 1));
EXPECT_EQ(0, file.Seek(0, SEEK_SET));
EXPECT_EQ(-1, file.Seek(-100, SEEK_SET));
file.Close();
/* /testsymlink -> testdir/reffile.txt */
strpathinrar = itemlist[2]->GetPath();
ASSERT_TRUE(StringUtils::EndsWith(strpathinrar, "/testsymlink", true));
EXPECT_EQ(0, XFILE::CFile::Stat(strpathinrar, &stat_buffer));
EXPECT_TRUE((stat_buffer.st_mode & S_IFMT) | S_IFLNK);
/*
* FIXME: Reading symlinks in RARs is currently broken. It takes a long time
* to read them and they produce erroneous results. The expected result is
* the target paths of the symlinks.
*/
ASSERT_TRUE(file.Open(strpathinrar));
EXPECT_EQ(19, file.GetLength());
file.Close();
/* /testsymlinksubdir -> testdir/testsubdir/reffile.txt */
strpathinrar = itemlist[3]->GetPath();
ASSERT_TRUE(StringUtils::EndsWith(strpathinrar, "/testsymlinksubdir", true));
EXPECT_EQ(0, XFILE::CFile::Stat(strpathinrar, &stat_buffer));
EXPECT_TRUE((stat_buffer.st_mode & S_IFMT) | S_IFLNK);
ASSERT_TRUE(file.Open(strpathinrar));
EXPECT_EQ(30, file.GetLength());
file.Close();
/* /testdir/ */
strpathinrar = itemlist[0]->GetPath();
ASSERT_TRUE(StringUtils::EndsWith(strpathinrar, "/testdir/", true));
EXPECT_EQ(0, XFILE::CFile::Stat(strpathinrar, &stat_buffer));
EXPECT_TRUE((stat_buffer.st_mode & S_IFMT) | S_IFDIR);
itemlist.Clear();
ASSERT_TRUE(XFILE::CDirectory::GetDirectory(strpathinrar, itemlist));
itemlist.Sort(SORT_METHOD_FULLPATH, SortOrderAscending);
/* /testdir/reffile.txt */
strpathinrar = itemlist[1]->GetPath();
ASSERT_TRUE(StringUtils::EndsWith(strpathinrar, "/testdir/reffile.txt",
true));
EXPECT_EQ(0, XFILE::CFile::Stat(strpathinrar, &stat_buffer));
EXPECT_TRUE((stat_buffer.st_mode & S_IFMT) | S_IFREG);
//.........这里部分代码省略.........
示例10: lyricData
std::vector< CStdString > CKaraokeLyricsTextUStar::readFile(const CStdString & lyricsFile, bool report_errors )
{
std::vector< CStdString > lines;
XFILE::CFile file;
if ( !file.Open( lyricsFile ) )
return std::vector< CStdString >();
unsigned int lyricSize = (unsigned int) file.GetLength();
if ( !lyricSize )
{
if ( report_errors )
CLog::Log( LOGERROR, "UStar lyric loader: lyric file %s has zero length", lyricsFile.c_str() );
return std::vector< CStdString >();
}
// Read the file into memory array
std::vector<char> lyricData( lyricSize );
file.Seek( 0, SEEK_SET );
// Read the whole file
if ( file.Read( &lyricData[0], lyricSize) != lyricSize )
return std::vector< CStdString >(); // disk error?
file.Close();
// Parse into the string array
unsigned int offset = 0;
unsigned int lineoffset = 0;
while ( offset < lyricSize )
{
// End of line?
if ( lyricData[offset] == 0x0D || lyricData[offset] == 0x0A )
{
// An empty line?
if ( lineoffset != offset )
{
lyricData[offset] = '\0';
lines.push_back( &lyricData[lineoffset] );
}
// Point to the next symbol
lineoffset = offset + 1;
}
offset++;
}
// Last line, if any
if ( lineoffset < lyricSize )
{
lyricData[lyricSize-1] = '\0';
lines.push_back( &lyricData[lineoffset] );
}
return lines;
}