zoukankan      html  css  js  c++  java
  • 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();
        }
     
    }

  • 相关阅读:
    20175126《Java程序设计》第七周学习总结
    20175126《Java程序设计》第六周学习总结
    软工实践个人总结
    第06组 Beta版本演示
    第06组 Beta冲刺(4/5)
    第06组 Beta冲刺(5/5)
    第06组 Beta冲刺(3/5)
    第06组 Beta冲刺(2/5)
    第6组 Beta冲刺(1/5)
    第06组 Alpha事后诸葛亮
  • 原文地址:https://www.cnblogs.com/gao/p/637185.html
Copyright © 2011-2022 走看看