Mi aiutate a tradurre in java questo codice visto che non so come sostituire alcune funzioni?

float **dsload(char* fname, int *cols, int *rows) {

FILE* fp;

float **ds;

int i;

fp = fopen(fname, "rb");

fread(cols, sizeof(int), 1, fp);

fread(rows, sizeof(int), 1, fp);

ds = malloc(*rows * sizeof(float*));

for (i = 0; i < *rows; i++) {

ds[i] = malloc(*cols * sizeof(float));

fread(ds[i], sizeof(float), *cols, fp);

}

fclose(fp);

return(ds);

}