msdn上的“索引器”(indexer)示例
PS:調試的時候在“命令行參數”屬性中,輸入“..\..\Test.txt”,便可以將與源代碼(indexer.cs)所在目錄下的Test.txt文件中的字節反轉。或者將編譯好的exe在cmd中輸入“indexer Test.txt”也可。
這個范例也提供了按照字節訪問文件的方法(類FileByteArray),收藏收藏了,
Demo
//Copyright(C)MicrosoftCorporation.Allrightsreserved.
//indexer.cs
//arguments:indexer.txt
usingSystem;
usingSystem.IO;
//Classtoprovideaccesstoalargefile
//asifitwereabytearray.
publicclassFileByteArray
{
Streamstream;//Holdstheunderlyingstream
//usedtoaccessthefile.
//CreateanewFileByteArrayencapsulatingaparticularfile.
publicFileByteArray(stringfileName)
{
stream=newFileStream(fileName,FileMode.Open);
}
//Closethestream.Thisshouldbethelastthingdone
//whenyouarefinished.
publicvoidClose()
{
stream.Close();
stream=null;
}
//Indexertoprovideread/writeaccesstothefile.
publicbytethis[longindex]//longisa64-bitinteger
{
//Readonebyteatoffsetindexandreturnit.
get
{
byte[]buffer=newbyte[1];
stream.Seek(index,SeekOrigin.Begin);
stream.Read(buffer,0,1);
returnbuffer[0];
}
//Writeonebyteatoffsetindexandreturnit.
set
{
byte[]buffer=newbyte[1]{value};
stream.Seek(index,SeekOrigin.Begin);
stream.Write(buffer,0,1);
}
}
//Getthetotallengthofthefile.
publiclongLength
{
get
{
returnstream.Seek(0,SeekOrigin.End);
}
}
}
//DemonstratetheFileByteArrayclass.
//Reversesthebytesinafile.
publicclassReverse
{
publicstaticvoidMain(String[]args)
{
//Checkforarguments.
if(args.Length!=1)
{
Console.WriteLine("Usage:Indexer<filename>");
return;
}
//Checkforfileexistence
if(!System.IO.File.Exists(args[0]))
{
Console.WriteLine("File"+args[0]+"notfound.");
return;
}
FileByteArrayfile=newFileByteArray(args[0]);
longlen=file.Length;
//Swapbytesinthefiletoreverseit.
for(longi=0;i<len/2;++i)
{
bytet;
//Notethatindexingthe"file"variableinvokesthe
//indexerontheFileByteStreamclass,whichreads
//andwritesthebytesinthefile.
t=file[i];
file[i]=file[len-i-1];
file[len-i-1]=t;
}
file.Close();
}
}
總結
以上是生活随笔為你收集整理的msdn上的“索引器”(indexer)示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机桌面美化软件推荐(这三个软件都可以试
- 下一篇: 甘蔗男是什么意思(榴莲男是什么意思)