好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Read a file into a byte array

Read a file into a byte array

Personal tools Log in / create account Navigation Main Page Community portal Recent changes Random page Largest Languages Java C OCaml Perl Toolbox What links here Related changes Special pages

Read a file into a byte array

Contents [ hide ]

1 Implementations 1.1 C 1.2 C++ 1.3 C# 1.4 Common Lisp 1.5 Java 1.6 OCaml 1.7 Perl 1.8 Python 1.9 Ruby

[ edit ] Implementations

[ edit ] C

view plain copy to clipboard print ?

#include <stdio.h>    #include <stdlib.h>       char * readFileBytes( const   char  *name)   {        FILE  *fl = fopen(name,  "r" );       fseek(fl, 0, SEEK_END);        long  len = ftell(fl);        char  *ret = malloc(len);       fseek(fl, 0, SEEK_SET);       fread(ret, 1, len, fl);       fclose(fl);        return  ret;   }  

[ edit ] C++

view plain copy to clipboard print ?

#include <iostream>    #include <fstream>       char * readFileBytes( const   char  *name)   {       ifstream fl(name);       fl.seekg( 0, ios::end );        size_t  len = fl.tellg();        char  *ret =  new   char [len];       fl.seekg(0, ios::beg);        fl.read(ret, len);       fl.close();        return  ret;   }  

[ edit ] C#

view plain copy to clipboard print ?

var bytes = System.IO.File.ReadAllBytes(name);  

[ edit ] Common Lisp

The following does not work with multibyte streams. The common lisp stream must be single-byte for this particular function.

; here's the function
(defun slurp-stream4 (stream)
  (let ((seq (make-string (file-length stream))))
    (read-sequence seq stream)
    seq))

;open up a stream:
(with-open-file (stream "filename.txt"))
  ;; call the function and return the string.
  (slurp-stream4 stream))

This is from [1] .

[ edit ] Java

This method reads the entire content of a file into a byte array.

view plain copy to clipboard print ?

// Returns the contents of the file in a byte array.    public   static   byte [] getBytesFromFile(File file)  throws  IOException {       InputStream is =  new  FileInputStream(file);        byte [] bytes;                   try  {            // Get the size of the file             long  length = file.length();                       // You cannot create an array using a long type.             // It needs to be an int type.             // Before converting to an int type, check             // to ensure that file is not larger than Integer.MAX_VALUE.             if  (length > Integer.MAX_VALUE) {                // File is too large (>2GB)            }                   // Create the byte array to hold the data            bytes =  new   byte [( int )length];                   // Read in the bytes             int  offset =  0 ;            int  numRead =  0 ;            while  (offset < bytes.length                  && (numRead=is.read(bytes, offset, bytes.length-offset)) >=  0 ) {               offset += numRead;           }                   // Ensure all the bytes have been read in             if  (offset < bytes.length) {                throw   new  IOException( "Could not completely read file "  + file.getName());           }       }        finally  {            // Close the input stream and return bytes            is.close();       }        return  bytes;   }  

[ edit ] OCaml
# let get_bytes_from_file filename =
    let ch = open_in filename in
    let buf = Buffer.create 1024 in
    (try Buffer.add_channel buf ch max_int with _ -> ());
    close_in ch;
    buf;;
val get_bytes_from_file : string -> Buffer.t = <fun>

[ edit ] Perl
use File::Slurp (read_file);
my $slurped = read_file('filename');

[ edit ] Python

Python 2.x's "str" type acts as an (immutable) byte array (not a true char array), so the following suffices:

view plain copy to clipboard print ?

def  get_bytes_from_file(filename):        return  open(filename,  "rb" ).read()  

[ edit ] Ruby

Since String objects 'hold and manipulate an arbitrary sequence of bytes' ( Source ), simply reading a file into a String will suffice.

view plain copy to clipboard print ?

def  get_bytes_from_file(filename)      File .read(filename)   end   

查看更多关于Read a file into a byte array的详细内容...

  阅读:43次