Files
HW-08-Basic-Multithreading/src/main/java/ChunkUtils.java
T

47 lines
1.3 KiB
Java

import java.util.ArrayList;
import java.util.List;
/**
* Utility methods related to chunk creation.
*/
public class ChunkUtils {
private ChunkUtils() {
// Utility class
}
/**
* Splits the total file size into a list of chunks.
* Chunk sizes are as even as possible.
* If the size is not exactly divisible, the last chunk gets the remainder.
*
* @param totalSizeMB total file size in MB
* @param chunkCount number of chunks
* @return list of ChunkStatus objects
*/
public static List<ChunkStatus> createChunks(int totalSizeMB, int chunkCount) {
List<ChunkStatus> chunks = new ArrayList<>();
if (totalSizeMB <= 0 || chunkCount <= 0) {
return chunks;
}
int baseChunkSize = totalSizeMB / chunkCount;
int remainder = totalSizeMB % chunkCount;
for (int i = 0; i < chunkCount; i++) {
int chunkSize = baseChunkSize;
if (i == chunkCount - 1) {
chunkSize += remainder;
}
// Create one ChunkStatus object for each chunk.
// chunkId is the chunk number, and chunkSize is this chunk's total size.
chunks.add(new ChunkStatus(i + 1, chunkSize));
}
return chunks;
}
}