zoukankan      html  css  js  c++  java
  • ReadFile Program Example

    The following program opens a file for input, reads its contents into a buffer, and displays the
    buffer. All procedures are called from the Irvine32 library:

    TITLE Reading a File (ReadFile.asm)
    ; Opens, reads, and displays a text file using
    ; procedures from Irvine32.lib.
    INCLUDE Irvine32.inc
    INCLUDE macros.inc
    BUFFER_SIZE = 5000
    .data
    buffer BYTE BUFFER_SIZE DUP(?)
    filename BYTE 80 DUP(0)
    fileHandle HANDLE ?
    .code
    main PROC
    ; Let user input a filename.
    mWrite "Enter an input filename: "
    mov edx,OFFSET filename
    mov ecx,SIZEOF filename
    call ReadString
    ; Open the file for input.
    mov edx,OFFSET filename
    call OpenInputFile
    mov fileHandle,eax
    ; Check for errors.
    cmp eax,INVALID_HANDLE_VALUE ; error opening file?
    jne file_ok ; no: skip
    mWrite <"Cannot open file",0dh,0ah>
    jmp quit ; and quit
    file_ok:
    ; Read the file into a buffer.
    mov edx,OFFSET buffer
    mov ecx,BUFFER_SIZE
    call ReadFromFile
    jnc check_buffer_size ; error reading?
    mWrite "Error reading file. " ; yes: show error message
    call WriteWindowsMsg
    jmp close_file
    check_buffer_size:
    cmp eax,BUFFER_SIZE ; buffer large enough?
    jb buf_size_ok ; yes
    mWrite <"Error: Buffer too small for the file",0dh,0ah>
    jmp quit ; and quit
    buf_size_ok:
    mov buffer[eax],0 ; insert null terminator
    mWrite "File size: "
    call WriteDec ; display file size
    call Crlf
    ; Display the buffer.
    mWrite <"Buffer:",0dh,0ah,0dh,0ah>
    mov edx,OFFSET buffer ; display the buffer
    call WriteString
    call Crlf
    close_file:
    mov eax,fileHandle
    call CloseFile
    quit:
    exit
    main ENDP
    END
    View Code

    The program reports an error if the file cannot be opened:

    Enter an input filename: crazy.txt
    Cannot open file

    It reports an error if it cannot read from the file. Suppose, for example, a bug in the program used
    the wrong file handle when reading the file:

    Enter an input filename: infile.txt
    Error reading file. Error 6: The handle is invalid.

    The buffer might be too small to hold the file:

    Enter an input filename: infile.txt
    Error: Buffer too small for the file

  • 相关阅读:
    [LeetCode] 131. 分割回文串
    [LeetCode] 130. 被围绕的区域
    [LeetCode] 128. 最长连续序列
    [LeetCode] 129. 求根到叶子节点数字之和
    转:阿里巴巴集团技术丛书——淘宝一线团队实践
    转:开源知识库
    转:php使用websocket示例详解
    阿里巴巴上市背后的技术力量
    转:php中实现精确设置session过期时间的方法
    转:Java程序员最常用的8个Java日志框架
  • 原文地址:https://www.cnblogs.com/dreamafar/p/5985902.html
Copyright © 2011-2022 走看看