The bytes array is only a buffer. For small files it is ok to use the size of the file itself as the buffer length, but it will never be greater than the max value of an integer (roughly 2GB, or 2^31-1), so why pass a long as a parameter on the signature of the method and then converting to its intValue?
For files greater than 2Gb the size would indeed be a Long, but then you can't create a buffer of that size, since you will get an OutOfMemoryException. So why not use a sane default buffer? You could even use a mixture of both approaches, like checking if the file size is smaller than certain threshold, you can use the file size as the buffer size, otherwise use a default buffer size.