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 arrayContents [ 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
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的详细内容...