本文整理汇总了C++中xfile::CFile::Open方法的典型用法代码示例。如果您正苦于以下问题:C++ CFile::Open方法的具体用法?C++ CFile::Open怎么用?C++ CFile::Open使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xfile::CFile
的用法示例。
在下文中一共展示了CFile::Open方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadXML
bool CGUIPythonWindowXML::LoadXML(const CStdString &strPath, const CStdString &strLowerPath)
{
// load our window
XFILE::CFile file;
if (!file.Open(strPath) && !file.Open(CStdString(strPath).ToLower()) && !file.Open(strLowerPath))
{
// fail - can't load the file
CLog::Log(LOGERROR, "%s: Unable to load skin file %s", __FUNCTION__, strPath.c_str());
return false;
}
// load the strings in
unsigned int offset = LoadScriptStrings();
CStdString xml;
char *buffer = new char[(unsigned int)file.GetLength()+1];
if(buffer == NULL)
return false;
int size = file.Read(buffer, file.GetLength());
if (size > 0)
{
buffer[size] = 0;
xml = buffer;
if (offset)
{
// replace the occurences of SCRIPT### with offset+###
// not particularly efficient, but it works
int pos = xml.Find("SCRIPT");
while (pos != (int)CStdString::npos)
{
CStdString num = xml.Mid(pos + 6, 4);
int number = atol(num.c_str());
CStdString oldNumber, newNumber;
oldNumber.Format("SCRIPT%d", number);
newNumber.Format("%lu", offset + number);
xml.Replace(oldNumber, newNumber);
pos = xml.Find("SCRIPT", pos + 6);
}
}
}
delete[] buffer;
TiXmlDocument xmlDoc;
xmlDoc.Parse(xml.c_str());
if (xmlDoc.Error())
return false;
return Load(xmlDoc);
}
示例2: Open
bool CJpegIO::Open(const CStdString &texturePath, unsigned int minx, unsigned int miny, bool read)
{
m_texturePath = texturePath;
unsigned int imgsize = 0;
XFILE::CFile file;
if (file.Open(m_texturePath.c_str(), 0))
{
imgsize = (unsigned int)file.GetLength();
m_inputBuff = new unsigned char[imgsize];
m_inputBuffSize = file.Read(m_inputBuff, imgsize);
file.Close();
if ((imgsize != m_inputBuffSize) || (m_inputBuffSize == 0))
return false;
}
else
return false;
if (!read)
return true;
if (Read(m_inputBuff, m_inputBuffSize, minx, miny))
return true;
return false;
}
示例3: fileName
HRESULT CD3DEffect::Open(D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID* ppData, UINT* pBytes)
{
XFILE::CFile includeFile;
std::string fileName("special://xbmc/system/shaders/");
fileName.append(pFileName);
if (!includeFile.Open(fileName))
{
CLog::Log(LOGERROR, "%s: Could not open 3DLUT file: %s", __FUNCTION__, fileName.c_str());
return E_FAIL;
}
int64_t length = includeFile.GetLength();
void *pData = malloc(length);
if (includeFile.Read(pData, length) != length)
{
free(pData);
return E_FAIL;
}
*ppData = pData;
*pBytes = length;
return S_OK;
}
示例4: Open
//========================================================================
int CFileURLProtocol::Open(URLContext *h, const char *filename, int flags)
{
if (flags != URL_RDONLY)
{
CLog::Log(LOGDEBUG, "CFileURLProtocol::Open: Only read-only is supported");
return -EINVAL;
}
CStdString url = filename;
if (url.Left(strlen("xb-http://")).Equals("xb-http://"))
{
url = url.Right(url.size() - strlen("xb-"));
}
CLog::Log(LOGDEBUG, "CFileURLProtocol::Open filename2(%s)", url.c_str());
// open the file, always in read mode, calc bitrate
unsigned int cflags = READ_BITRATE;
XFILE::CFile *cfile = new XFILE::CFile();
if (CFileItem(url, false).IsInternetStream())
cflags |= READ_CACHED;
// open file in binary mode
if (!cfile->Open(url, cflags))
{
delete cfile;
return -EIO;
}
h->priv_data = (void *)cfile;
return 0;
}
示例5: 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));
}
示例6: Load
int CNfoFile::Load(const CStdString& strFile)
{
Close();
XFILE::CFile file;
if (file.Open(strFile))
{
m_size = (int)file.GetLength();
try
{
m_doc = new char[m_size+1];
m_headofdoc = m_doc;
}
catch (...)
{
CLog::Log(LOGERROR, "%s: Exception while creating file buffer",__FUNCTION__);
return 1;
}
if (!m_doc)
{
file.Close();
return 1;
}
file.Read(m_doc, m_size);
m_doc[m_size] = 0;
file.Close();
return 0;
}
return 1;
}
示例7: IsAnimated
bool Gif::IsAnimated(const char* file)
{
if (!m_dll.IsLoaded())
return false;
if (m_isAnimated < 0)
{
m_filename = file;
m_isAnimated = 0;
GifFileType* gif = nullptr;
XFILE::CFile gifFile;
if (!gifFile.Open(file) || !Open(gif, &gifFile, ReadFromVfs))
return false;
if (gif)
{
if (Slurp(gif) && gif->ImageCount > 1)
m_isAnimated = 1;
Close(gif);
gifFile.Close();
}
}
return m_isAnimated > 0;
}
示例8: while
TEST_F(TestRegExpLog, DumpOvector)
{
CRegExp regex;
CStdString logfile, logstring;
char buf[100];
unsigned int bytesread;
XFILE::CFile file;
logfile = CSpecialProtocol::TranslatePath("special://temp/") + "xbmc.log";
EXPECT_TRUE(CLog::Init(CSpecialProtocol::TranslatePath("special://temp/")));
EXPECT_TRUE(XFILE::CFile::Exists(logfile));
EXPECT_TRUE(regex.RegComp("^(?<first>Test)\\s*(?<second>.*)\\."));
EXPECT_EQ(0, regex.RegFind("Test string."));
regex.DumpOvector(LOGDEBUG);
CLog::Close();
EXPECT_TRUE(file.Open(logfile));
while ((bytesread = file.Read(buf, sizeof(buf) - 1)) > 0)
{
buf[bytesread] = '\0';
logstring.append(buf);
}
file.Close();
EXPECT_FALSE(logstring.empty());
EXPECT_STREQ("\xEF\xBB\xBF", logstring.substr(0, 3).c_str());
EXPECT_TRUE(regex.RegComp(".*DEBUG: regexp ovector=\\{\\[0,12\\],\\[0,4\\],"
"\\[5,11\\]\\}.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(XFILE::CFile::Delete(logfile));
}
示例9: Get
bool CScraperUrl::Get(const SUrlEntry& scrURL, string& strHTML, CHTTP& http)
{
CURL url(scrURL.m_url);
http.SetReferer(scrURL.m_spoof);
CStdString strCachePath;
if (!scrURL.m_cache.IsEmpty())
{
CUtil::AddFileToFolder(g_advancedSettings.m_cachePath,"scrapers\\"+scrURL.m_cache,strCachePath);
if (XFILE::CFile::Exists(strCachePath))
{
XFILE::CFile file;
file.Open(strCachePath);
char* temp = new char[(int)file.GetLength()];
file.Read(temp,file.GetLength());
strHTML.append(temp,temp+file.GetLength());
file.Close();
delete[] temp;
return true;
}
}
if (scrURL.m_post)
{
CStdString strOptions = url.GetOptions();
strOptions = strOptions.substr(1);
url.SetOptions("");
CStdString strUrl;
url.GetURL(strUrl);
if (!http.Post(strUrl, strOptions, strHTML))
return false;
}
else if (!http.Get(scrURL.m_url, strHTML))
return false;
if (scrURL.m_url.Find(".zip") > -1)
{
XFILE::CFileZip file;
CStdString strBuffer;
int iSize = file.UnpackFromMemory(strBuffer,strHTML);
if (iSize)
{
strHTML.clear();
strHTML.append(strBuffer.c_str(),strBuffer.data()+iSize);
}
}
if (!scrURL.m_cache.IsEmpty())
{
CStdString strCachePath;
CUtil::AddFileToFolder(g_advancedSettings.m_cachePath,"scrapers\\"+scrURL.m_cache,strCachePath);
XFILE::CFile file;
if (file.OpenForWrite(strCachePath,true,true))
file.Write(strHTML.data(),strHTML.size());
file.Close();
}
return true;
}
示例10: while
TEST_F(Testlog, Log)
{
std::string logfile, logstring;
char buf[100];
unsigned int bytesread;
XFILE::CFile file;
CRegExp regex;
std::string appName = CCompileInfo::GetAppName();
StringUtils::ToLower(appName);
logfile = CSpecialProtocol::TranslatePath("special://temp/") + appName + ".log";
EXPECT_TRUE(CLog::Init(CSpecialProtocol::TranslatePath("special://temp/").c_str()));
EXPECT_TRUE(XFILE::CFile::Exists(logfile));
CLog::Log(LOGDEBUG, "debug log message");
CLog::Log(LOGINFO, "info log message");
CLog::Log(LOGNOTICE, "notice log message");
CLog::Log(LOGWARNING, "warning log message");
CLog::Log(LOGERROR, "error log message");
CLog::Log(LOGSEVERE, "severe log message");
CLog::Log(LOGFATAL, "fatal log message");
CLog::Log(LOGNONE, "none type log message");
CLog::Close();
EXPECT_TRUE(file.Open(logfile));
while ((bytesread = file.Read(buf, sizeof(buf) - 1)) > 0)
{
buf[bytesread] = '\0';
logstring.append(buf);
}
file.Close();
EXPECT_FALSE(logstring.empty());
EXPECT_STREQ("\xEF\xBB\xBF", logstring.substr(0, 3).c_str());
EXPECT_TRUE(regex.RegComp(".*DEBUG: debug log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*INFO: info log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*NOTICE: notice log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*WARNING: warning log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*ERROR: error log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*SEVERE: severe log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*FATAL: fatal log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(regex.RegComp(".*NONE: none type log message.*"));
EXPECT_GE(regex.RegFind(logstring), 0);
EXPECT_TRUE(XFILE::CFile::Delete(logfile));
}
示例11: 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();
}
示例12: 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();
}
示例13: ReadFile
bool CFileCurl::ReadFile(const CStdString &fileName, CStdString &out)
{
XFILE::CFile file;
if (file.Open(fileName))
{
char buffer[16384];
unsigned int size_read;
while( (size_read = file.Read(buffer, sizeof(buffer)) ) > 0 )
out.append(buffer, size_read);
file.Close();
return true;
}
return false;
}
示例14: 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();
}
}
示例15: SetFile
void CHTTPFileHandler::SetFile(const std::string& file, int responseStatus)
{
m_url = file;
m_response.status = responseStatus;
if (m_url.empty())
return;
// translate the response status into the response type
if (m_response.status == MHD_HTTP_OK)
m_response.type = HTTPFileDownload;
else if (m_response.status == MHD_HTTP_FOUND)
m_response.type = HTTPRedirect;
else
m_response.type = HTTPError;
// try to determine some additional information if the file can be downloaded
if (m_response.type == HTTPFileDownload)
{
// determine the content type
std::string ext = URIUtils::GetExtension(m_url);
StringUtils::ToLower(ext);
m_response.contentType = CMime::GetMimeType(ext);
// determine the last modified date
XFILE::CFile fileObj;
if (!fileObj.Open(m_url, XFILE::READ_NO_CACHE))
{
m_response.type = HTTPError;
m_response.status = MHD_HTTP_INTERNAL_SERVER_ERROR;
}
else
{
struct __stat64 statBuffer;
if (fileObj.Stat(&statBuffer) == 0)
SetLastModifiedDate(&statBuffer);
}
}
// disable ranges and caching if the file can't be downloaded
if (m_response.type != HTTPFileDownload)
{
m_canHandleRanges = false;
m_canBeCached = false;
}
// disable caching if the last modified date couldn't be read
if (!m_lastModified.IsValid())
m_canBeCached = false;
}