本文整理汇总了C++中NPT_InputStreamReference::ReadFully方法的典型用法代码示例。如果您正苦于以下问题:C++ NPT_InputStreamReference::ReadFully方法的具体用法?C++ NPT_InputStreamReference::ReadFully怎么用?C++ NPT_InputStreamReference::ReadFully使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NPT_InputStreamReference
的用法示例。
在下文中一共展示了NPT_InputStreamReference::ReadFully方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: file_stream_ref
/*----------------------------------------------------------------------
| NPT_ZipFile::GetInputStream
+---------------------------------------------------------------------*/
NPT_Result
NPT_ZipFile::GetInputStream(Entry& entry, NPT_InputStreamReference& zip_stream, NPT_InputStream*& file_stream)
{
// default return value
file_stream = NULL;
// we don't support encrypted files
if (entry.m_Flags & NPT_ZIP_FILE_FLAG_ENCRYPTED) {
return NPT_ERROR_NOT_SUPPORTED;
}
// check that we support the compression method
#if NPT_CONFIG_ENABLE_ZIP
if (entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_NONE &&
entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_DEFLATE) {
return NPT_ERROR_NOT_SUPPORTED;
}
#else
if (entry.m_CompressionMethod != NPT_ZIP_FILE_COMPRESSION_METHOD_NONE) {
return NPT_ERROR_NOT_SUPPORTED;
}
#endif
// seek to the start of the file entry
NPT_Result result = zip_stream->Seek(entry.m_RelativeOffset);
if (NPT_FAILED(result)) {
NPT_LOG_WARNING_1("seek failed (%d)", result);
return result;
}
// read the fixed part of the header
unsigned char header[30];
result = zip_stream->ReadFully(header, 30);
if (NPT_FAILED(result)) {
NPT_LOG_WARNING_1("read failed (%d)", result);
return result;
}
NPT_UInt16 file_name_length = NPT_BytesToInt16Le(&header[26]);
NPT_UInt16 extra_field_length = NPT_BytesToInt16Le(&header[28]);
unsigned int header_size = 30+file_name_length+extra_field_length;
NPT_LargeSize zip_stream_size = 0;
zip_stream->GetSize(zip_stream_size);
if (entry.m_RelativeOffset+header_size+entry.m_CompressedSize > zip_stream_size) {
// something's wrong here
return NPT_ERROR_INVALID_FORMAT;
}
file_stream = new NPT_SubInputStream(zip_stream, entry.m_RelativeOffset+header_size, entry.m_CompressedSize);
#if NPT_CONFIG_ENABLE_ZIP
if (entry.m_CompressionMethod == NPT_ZIP_FILE_COMPRESSION_METHOD_DEFLATE) {
NPT_InputStreamReference file_stream_ref(file_stream);
file_stream = new NPT_ZipInflatingInputStream(file_stream_ref, true);
}
#endif
return NPT_SUCCESS;
}
示例2: file
//.........这里部分代码省略.........
result = NPT_File::ListDirectory("foobar.dir", entries);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(entries.GetItemCount() == 3);
result = NPT_File::DeleteFile("foobar.dir");
NPT_ASSERT(NPT_FAILED(result));
result = NPT_File::DeleteDirectory("foobar.dir");
NPT_ASSERT(result == NPT_ERROR_DIRECTORY_NOT_EMPTY);
result = NPT_File::Rename("foobar.dir", "foobar.dir-r");
NPT_ASSERT(NPT_SUCCEEDED(result));
dirname = "foobar.dir-r";
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file1";
result = NPT_File::DeleteFile(fname);
NPT_ASSERT(NPT_SUCCEEDED(result));
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file2";
result = NPT_File::DeleteFile(fname);
NPT_ASSERT(NPT_SUCCEEDED(result));
fname = dirname;
fname += NPT_FilePath::Separator;
fname += "file3";
result = NPT_File::DeleteFile(fname);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = NPT_File::DeleteDirectory("foobar.dir-r");
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(!NPT_File::Exists("foobar.dir-r"));
// paths
NPT_String test;
test = NPT_FilePath::BaseName("");
NPT_ASSERT(test == "");
test = NPT_FilePath::BaseName("a");
NPT_ASSERT(test == "a");
test = NPT_FilePath::BaseName("a"+NPT_FilePath::Separator+"b");
NPT_ASSERT(test == "b");
test = NPT_FilePath::BaseName("a"+NPT_FilePath::Separator+"b"+NPT_FilePath::Separator);
NPT_ASSERT(test == "");
test = NPT_FilePath::BaseName(NPT_FilePath::Separator+"a");
NPT_ASSERT(test == "a");
test = NPT_FilePath::BaseName(NPT_FilePath::Separator);
NPT_ASSERT(test == "");
test = NPT_FilePath::DirectoryName("");
NPT_ASSERT(test == "");
test = NPT_FilePath::DirectoryName("a");
NPT_ASSERT(test == "");
test = NPT_FilePath::DirectoryName("a"+NPT_FilePath::Separator+"b");
NPT_ASSERT(test == "a");
test = NPT_FilePath::DirectoryName("a"+NPT_FilePath::Separator+"b"+NPT_FilePath::Separator);
NPT_ASSERT(test == "a"+NPT_FilePath::Separator+"b");
test = NPT_FilePath::DirectoryName(NPT_FilePath::Separator+"a");
NPT_ASSERT(test == NPT_FilePath::Separator);
test = NPT_FilePath::DirectoryName(NPT_FilePath::Separator);
NPT_ASSERT(test == NPT_FilePath::Separator);
// large files
if (argc == 2) {
result = CreateNewFile(argv[1], 0x10000, 0x10007);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_String new_name = argv[1];
new_name += ".renamed";
result = NPT_File::Rename(argv[1], new_name);
NPT_ASSERT(NPT_SUCCEEDED(result));
file = NPT_File(new_name);
result = file.Open(NPT_FILE_OPEN_MODE_READ);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_InputStreamReference input;
file.GetInputStream(input);
NPT_Position position;
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == 0);
NPT_LargeSize large_size = (NPT_LargeSize)0x10007 * (NPT_LargeSize)0x10000;
result = input->Seek(large_size-0x10007);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == large_size-0x10007);
unsigned char* buffer = new unsigned char[0x10007];
result = input->ReadFully(buffer, 0x10007);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == large_size);
for (unsigned int i=0; i<0x10007; i++) {
NPT_ASSERT(buffer[i] == (unsigned char)i);
}
file.Close();
NPT_File::DeleteFile(new_name);
}
return 0;
}
示例3: file
//.........这里部分代码省略.........
test = NPT_FilePath::DirName("");
NPT_ASSERT(test == "");
test = NPT_FilePath::DirName("a");
NPT_ASSERT(test == "");
test = NPT_FilePath::DirName("a"+NPT_FilePath::Separator+"b");
NPT_ASSERT(test == "a");
test = NPT_FilePath::DirName("a"+NPT_FilePath::Separator+"b"+NPT_FilePath::Separator);
NPT_ASSERT(test == "a"+NPT_FilePath::Separator+"b");
test = NPT_FilePath::DirName(NPT_FilePath::Separator+"a");
NPT_ASSERT(test == NPT_FilePath::Separator);
test = NPT_FilePath::DirName(NPT_FilePath::Separator);
NPT_ASSERT(test == NPT_FilePath::Separator);
// small files
result = CreateNewFile("small.bin", 0x100, 0x107);
NPT_ASSERT(NPT_SUCCEEDED(result));
file = NPT_File("small.bin");
result = file.Open(NPT_FILE_OPEN_MODE_READ);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_InputStreamReference input;
file.GetInputStream(input);
NPT_Position position;
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == 0);
NPT_LargeSize large_size = (NPT_LargeSize)0x107 * (NPT_LargeSize)0x100;
result = input->Seek(large_size-0x107);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == large_size-0x107);
unsigned char* buffer = new unsigned char[0x107];
result = input->ReadFully(buffer, 0x107);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == large_size);
for (unsigned int i=0; i<0x107; i++) {
NPT_ASSERT(buffer[i] == (unsigned char)i);
}
file.Close();
NPT_File::RemoveFile(file.GetPath());
// large files
if (argc == 2) {
result = CreateNewFile(argv[1], 0x10000, 0x10007);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_String new_name = argv[1];
new_name += ".renamed";
result = NPT_File::Rename(argv[1], new_name);
NPT_ASSERT(NPT_SUCCEEDED(result));
file = NPT_File(new_name);
result = file.Open(NPT_FILE_OPEN_MODE_READ);
NPT_ASSERT(NPT_SUCCEEDED(result));
file.GetInputStream(input);
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == 0);
large_size = (NPT_LargeSize)0x10007 * (NPT_LargeSize)0x10000;
result = input->Seek(large_size-0x10007);
NPT_ASSERT(NPT_SUCCEEDED(result));
result = input->Tell(position);
NPT_ASSERT(NPT_SUCCEEDED(result));
NPT_ASSERT(position == large_size-0x10007);