• msdn上的“索引器”(indexer)示例


    PS:调试的时候在“命令行参数”属性中,输入“..\..\Test.txt”,便可以将与源代码(indexer.cs)所在目录下的Test.txt文件中的字节反转。或者将编译好的exe在cmd中输入“indexer Test.txt”也可。
    这个范例也提供了按照字节访问文件的方法(类FileByteArray),收藏收藏了,



    Demo
    //Copyright (C) Microsoft Corporation.  All rights reserved.

    // indexer.cs
    // arguments: indexer.txt
    using System;
    using System.IO;

    // Class to provide access to a large file
    // as if it were a byte array.
    public class FileByteArray
    {
        Stream stream;      
    // Holds the underlying stream
                            
    // used to access the file.
    // Create a new FileByteArray encapsulating a particular file.
        public FileByteArray(string fileName)
        
    {
            stream 
    = new FileStream(fileName, FileMode.Open);
        }


        
    // Close the stream. This should be the last thing done
        
    // when you are finished.
        public void Close()
        
    {
            stream.Close();
            stream 
    = null;
        }


        
    // Indexer to provide read/write access to the file.
        public byte this[long index]   // long is a 64-bit integer
        {
            
    // Read one byte at offset index and return it.
            get 
            
    {
                
    byte[] buffer = new byte[1];
                stream.Seek(index, SeekOrigin.Begin);
                stream.Read(buffer, 
    01);
                
    return buffer[0];
            }

            
    // Write one byte at offset index and return it.
            set 
            
    {
                
    byte[] buffer = new byte[1{value};
                stream.Seek(index, SeekOrigin.Begin);
                stream.Write(buffer, 
    01);
            }

        }


        
    // Get the total length of the file.
        public long Length 
        
    {
            
    get 
            
    {
                
    return stream.Seek(0, SeekOrigin.End);
            }

        }

    }


    // Demonstrate the FileByteArray class.
    // Reverses the bytes in a file.
    public class Reverse 
    {
        
    public static void Main(String[] args) 
        
    {
            
    // Check for arguments.
            if (args.Length != 1)
            
    {
                Console.WriteLine(
    "Usage : Indexer <filename>");
                
    return;
            }


            
    // Check for file existence
            if (!System.IO.File.Exists(args[0]))
            
    {
                Console.WriteLine(
    "File " + args[0+ " not found.");
                
    return;
            }


            FileByteArray file 
    = new FileByteArray(args[0]);
            
    long len = file.Length;

            
    // Swap bytes in the file to reverse it.
            for (long i = 0; i < len / 2++i) 
            
    {
                
    byte t;

                
    // Note that indexing the "file" variable invokes the
                
    // indexer on the FileByteStream class, which reads
                
    // and writes the bytes in the file.
                t = file[i];
                file[i] 
    = file[len - i - 1];
                file[len 
    - i - 1= t;
            }


            file.Close();
        }
     
    }

  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/gao/p/637185.html
Copyright © 2020-2023  润新知