c,c++,java,python,ruby实现将文件读入数组的,pythonruby,c实现读取文件转为字节数


c实现读取文件转为字节数组

#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;}

C++实现

#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;}

C#实现读取文件转换为数组

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

Java实现将读取文件转换为字节数组

// 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;}

Perl实现读取文件

use File::Slurp (read_file);my $slurped = read_file('filename');

Python实现读取文件

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

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

Ruby 实现读取文件

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

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

评论关闭