Class RangeUtils

java.lang.Object
io.leandev.appfuse.file.RangeUtils

public final class RangeUtils extends Object

HTTP Range 請求處理工具

支援 RFC 7233 定義的 Range 請求格式,用於實現斷點續傳與部分內容下載。

支援的格式

  • bytes=0-1000 - 從 0 到 1000 bytes
  • bytes=1000- - 從 1000 到檔案結尾
  • bytes=-500 - 最後 500 bytes

使用範例

Optional<ByteRange> range = RangeUtils.parseRange("bytes=0-1000", fileSize);
if (range.isPresent()) {
    // 回應 206 Partial Content
    ByteRange r = range.get();
    inputStream.skip(r.start());
    // 讀取 r.length() bytes
}
See Also:
  • Method Details

    • parseRange

      public static Optional<RangeUtils.ByteRange> parseRange(String rangeHeader, long fileSize)

      解析 HTTP Range header

      根據 RFC 7233 規範解析 Range header,支援以下格式:

      • bytes=0-1000 - 絕對範圍
      • bytes=1000- - 從指定位置到結尾
      • bytes=-500 - 最後 N bytes(suffix range)
      Parameters:
      rangeHeader - HTTP Range header 值(如 "bytes=0-1000")
      fileSize - 檔案總大小
      Returns:
      解析後的範圍,若格式無效則回傳 empty
    • isRangeRequest

      public static boolean isRangeRequest(String rangeHeader)
      檢查是否為有效的 Range 請求
      Parameters:
      rangeHeader - HTTP Range header 值
      Returns:
      是否為有效的 Range 請求格式