本文整理汇总了C++中xfile::CFile类的典型用法代码示例。如果您正苦于以下问题:C++ CFile类的具体用法?C++ CFile怎么用?C++ CFile使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CFile类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: item
// This test will fail until ActionDeleteFolder has a proper implementation
TEST(TestFileOperationJob, ActionDeleteFolder)
{
XFILE::CFile *tmpfile;
CStdString tmpfilepath, destpath;
CFileItemList items;
CFileOperationJob job;
ASSERT_TRUE((tmpfile = XBMC_CREATETEMPFILE("")));
tmpfilepath = XBMC_TEMPFILEPATH(tmpfile);
tmpfile->Close();
destpath = tmpfilepath;
destpath += ".deletefolder";
ASSERT_FALSE(XFILE::CFile::Exists(destpath));
CFileItemPtr item(new CFileItem(destpath));
item->SetPath(destpath);
item->m_bIsFolder = true;
item->Select(true);
items.Add(item);
job.SetFileOperation(CFileOperationJob::ActionCreateFolder, items, destpath);
EXPECT_EQ(CFileOperationJob::ActionCreateFolder, job.GetAction());
EXPECT_TRUE(job.DoWork());
EXPECT_TRUE(XFILE::CDirectory::Exists(destpath));
job.SetFileOperation(CFileOperationJob::ActionDeleteFolder, items, destpath);
EXPECT_EQ(CFileOperationJob::ActionDeleteFolder, job.GetAction());
EXPECT_TRUE(job.DoWork());
EXPECT_FALSE(XFILE::CDirectory::Exists(destpath));
EXPECT_TRUE(XBMC_DELETETEMPFILE(tmpfile));
}
示例2: saveLyrics
void CKaraokeLyricsText::saveLyrics()
{
XFILE::CFile file;
CStdString out;
for ( unsigned int i = 0; i < m_lyrics.size(); i++ )
{
CStdString timing;
timing.Format( "%02d:%02d.%d", m_lyrics[i].timing / 600, (m_lyrics[i].timing % 600) / 10, (m_lyrics[i].timing % 10) );
if ( (m_lyrics[i].flags & LYRICS_NEW_PARAGRAPH) != 0 )
out += "\n\n";
if ( (m_lyrics[i].flags & LYRICS_NEW_LINE) != 0 )
out += "\n";
out += "[" + timing + "]" + m_lyrics[i].text;
}
out += "\n";
if ( !file.OpenForWrite( "special://temp/tmp.lrc", true ) )
return;
file.Write( out, out.size() );
}
示例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: LoadFile
bool CXBMCTinyXML::LoadFile(const std::string& _filename, TiXmlEncoding encoding)
{
value = _filename.c_str();
XFILE::CFile file;
XFILE::auto_buffer buffer;
if (file.LoadFile(value, buffer) <= 0)
{
SetError(TIXML_ERROR_OPENING_FILE, NULL, NULL, TIXML_ENCODING_UNKNOWN);
return false;
}
// Delete the existing data:
Clear();
location.Clear();
std::string data(buffer.get(), buffer.length());
buffer.clear(); // free memory early
if (encoding == TIXML_ENCODING_UNKNOWN)
Parse(data, file.GetContentCharset());
else
Parse(data, encoding);
if (Error())
return false;
return true;
}
示例5: LoadFromFileInternal
bool CBaseTexture::LoadFromFileInternal(const std::string& texturePath, unsigned int maxWidth, unsigned int maxHeight, bool autoRotate, bool requirePixels, const std::string& strMimeType)
{
if (URIUtils::HasExtension(texturePath, ".dds"))
{ // special case for DDS images
CDDSImage image;
if (image.ReadFile(texturePath))
{
Update(image.GetWidth(), image.GetHeight(), 0, image.GetFormat(), image.GetData(), false);
return true;
}
return false;
}
unsigned int width = maxWidth ? std::min(maxWidth, g_Windowing.GetMaxTextureSize()) : g_Windowing.GetMaxTextureSize();
unsigned int height = maxHeight ? std::min(maxHeight, g_Windowing.GetMaxTextureSize()) : g_Windowing.GetMaxTextureSize();
// Read image into memory to use our vfs
XFILE::CFile file;
XFILE::auto_buffer buf;
if (file.LoadFile(texturePath, buf) <= 0)
return false;
CURL url(texturePath);
// make sure resource:// paths are properly resolved
if (url.IsProtocol("resource"))
{
std::string translatedPath;
if (XFILE::CResourceFile::TranslatePath(url, translatedPath))
url.Parse(translatedPath);
}
// handle xbt:// paths differently because it allows loading the texture directly from memory
if (url.IsProtocol("xbt"))
{
XFILE::CXbtFile xbtFile;
if (!xbtFile.Open(url))
return false;
return LoadFromMemory(xbtFile.GetImageWidth(), xbtFile.GetImageHeight(), 0, xbtFile.GetImageFormat(),
xbtFile.HasImageAlpha(), reinterpret_cast<unsigned char*>(buf.get()));
}
IImage* pImage;
if(strMimeType.empty())
pImage = ImageFactory::CreateLoader(texturePath);
else
pImage = ImageFactory::CreateLoaderFromMimeType(strMimeType);
if (!LoadIImage(pImage, (unsigned char *)buf.get(), buf.size(), width, height, autoRotate))
{
CLog::Log(LOGDEBUG, "%s - Load of %s failed.", __FUNCTION__, texturePath.c_str());
delete pImage;
return false;
}
delete pImage;
return true;
}
示例6: 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;
}
示例7: CreateThumbnailFromSurface
bool COMXImage::CreateThumbnailFromSurface(unsigned char* buffer, unsigned int width, unsigned int height,
unsigned int format, unsigned int pitch, const CStdString& destFile)
{
if(format != XB_FMT_A8R8G8B8 || !buffer) {
CLog::Log(LOGDEBUG, "%s::%s : %s failed format=0x%x\n", CLASSNAME, __func__, destFile.c_str(), format);
return false;
}
if(!Encode(buffer, height * pitch, width, height, pitch)) {
CLog::Log(LOGDEBUG, "%s::%s : %s encode failed\n", CLASSNAME, __func__, destFile.c_str());
return false;
}
XFILE::CFile file;
if (file.OpenForWrite(destFile, true))
{
CLog::Log(LOGDEBUG, "%s::%s : %s width %d height %d\n", CLASSNAME, __func__, destFile.c_str(), width, height);
file.Write(GetEncodedData(), GetEncodedSize());
file.Close();
return true;
}
return false;
}
示例8: 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;
}
示例9: 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;
}
示例10: LoadFile
bool CPODocument::LoadFile(const std::string &pofilename)
{
CURL poFileUrl(pofilename);
if (!XFILE::CFile::Exists(poFileUrl))
return false;
XFILE::CFile file;
XFILE::auto_buffer buf;
if (file.LoadFile(poFileUrl, buf) < 18) // at least a size of a minimalistic header
{
CLog::Log(LOGERROR, "%s: can't load file \"%s\" or file is too small", __FUNCTION__, pofilename.c_str());
return false;
}
m_strBuffer = '\n';
m_strBuffer.append(buf.get(), buf.size());
buf.clear();
ConvertLineEnds(pofilename);
// we make sure, to have an LF at the end of buffer
if (*m_strBuffer.rbegin() != '\n')
{
m_strBuffer += "\n";
}
m_POfilelength = m_strBuffer.size();
if (GetNextEntry() && m_Entry.Type == MSGID_FOUND)
return true;
CLog::Log(LOGERROR, "POParser: unable to read PO file header from file: %s", pofilename.c_str());
return false;
}
示例11: CreateThumbnailFromSurface
bool CPicture::CreateThumbnailFromSurface(const unsigned char *buffer, int width, int height, int stride, const std::string &thumbFile)
{
CLog::Log(LOGDEBUG, "cached image '%s' size %dx%d", CURL::GetRedacted(thumbFile).c_str(), width, height);
if (URIUtils::HasExtension(thumbFile, ".jpg"))
{
#if defined(HAS_OMXPLAYER)
if (COMXImage::CreateThumbnailFromSurface((BYTE *)buffer, width, height, XB_FMT_A8R8G8B8, stride, thumbFile.c_str()))
return true;
#endif
}
unsigned char *thumb = NULL;
unsigned int thumbsize=0;
IImage* pImage = ImageFactory::CreateLoader(thumbFile);
if(pImage == NULL || !pImage->CreateThumbnailFromSurface((BYTE *)buffer, width, height, XB_FMT_A8R8G8B8, stride, thumbFile.c_str(), thumb, thumbsize))
{
CLog::Log(LOGERROR, "Failed to CreateThumbnailFromSurface for %s", CURL::GetRedacted(thumbFile).c_str());
delete pImage;
return false;
}
XFILE::CFile file;
const bool ret = file.OpenForWrite(thumbFile, true) && file.Write(thumb, thumbsize) == thumbsize;
pImage->ReleaseThumbnailBuffer();
delete pImage;
return ret;
}
示例12: Download
bool CCurlFile::Download(const CStdString& strURL, const CStdString& strFileName, LPDWORD pdwSize)
{
CLog::Log(LOGINFO, "Download: %s->%s", strURL.c_str(), strFileName.c_str());
CStdString strData;
if (!Get(strURL, strData))
return false;
XFILE::CFile file;
if (!file.OpenForWrite(strFileName, true))
{
CLog::Log(LOGERROR, "Unable to open file %s: %u",
strFileName.c_str(), GetLastError());
return false;
}
if (strData.size())
file.Write(strData.c_str(), strData.size());
file.Close();
if (pdwSize != NULL)
{
*pdwSize = strData.size();
}
return true;
}
示例13: Load
bool CKaraokeLyricsTextKAR::Load()
{
XFILE::CFile file;
bool succeed = true;
m_reportedInvalidVarField = false;
// Clear the lyrics array
clearLyrics();
if (file.LoadFile(m_midiFile, m_midiData) <= 0)
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;
}
m_midiData.clear();
return succeed;
}
示例14: 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));
}
示例15:
TEST(TestFileUtils, DeleteItemString)
{
XFILE::CFile *tmpfile;
ASSERT_NE(nullptr, (tmpfile = XBMC_CREATETEMPFILE("")));
tmpfile->Close(); //Close tmpfile before we try to delete it
EXPECT_TRUE(CFileUtils::DeleteItem(XBMC_TEMPFILEPATH(tmpfile)));
}