返回顶部

收藏

c,c++,java,python,ruby实现将文件读入数组的

更多

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 char array), 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 reading a file into a String will suffice.

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

标签:c,java,python,ruby,文件,c#

收藏

0人收藏

支持

1

反对

0