blob: f77b557b2f6320bb3550e5a1616eb86136174a96 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Input / output &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'cpp/api/io';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/cpp/api/io.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Arrow IPC" href="ipc.html" />
<link rel="prev" title="Asynchronous programming" href="async.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 has-children"><a class="reference internal" href="../getting_started.html">Getting Started</a><input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../build_system.html">Using Arrow C++ in your own project</a></li>
<li class="toctree-l2"><a class="reference internal" href="../conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/io_tutorial.html">Arrow File I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/compute_tutorial.html">Arrow Compute</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tutorials/datasets_tutorial.html">Arrow Datasets</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../user_guide.html">User Guide</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../overview.html">High-Level Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="../memory.html">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arrays.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="../datatypes.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tables.html">Tabular Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="../compute.html">Compute Functions</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../gandiva.html">The Gandiva Expression Compiler</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../gandiva/external_func.html">Gandiva External Functions Development Guide</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../streaming_execution.html">Acero: A C++ streaming execution engine</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../acero/overview.html">Acero Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/user_guide.html">Acero User’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/substrait.html">Using Acero with Substrait</a></li>
<li class="toctree-l3"><a class="reference internal" href="../acero/developer_guide.html">Developer’s Guide</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../io.html">Input / output and filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ipc.html">Reading and writing the Arrow IPC format</a></li>
<li class="toctree-l2"><a class="reference internal" href="../orc.html">Reading and Writing ORC files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parquet.html">Reading and writing Parquet files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json.html">Reading JSON files</a></li>
<li class="toctree-l2"><a class="reference internal" href="../dataset.html">Tabular Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="../flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">Debugging code using Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../threading.html">Thread Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../opentelemetry.html">OpenTelemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="../env_vars.html">Environment Variables</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../examples/cmake_minimal_build.html">Minimal build using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/compute_and_write_example.html">Compute and Write CSV Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_documentation_example.html">Arrow Datasets example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/dataset_skyhook_scan_example.html">Arrow Skyhook example</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/row_columnar_conversion.html">Row to columnar conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="../examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li>
</ul>
</li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="../api.html">API Reference</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="support.html">Programming Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory.html">Memory (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread.html">Thread (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="datatype.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="array.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="scalar.html">Scalars</a></li>
<li class="toctree-l2"><a class="reference internal" href="builder.html">Array Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="table.html">Two-dimensional Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="c_abi.html">C Interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="acero.html">Streaming Execution (Acero)</a></li>
<li class="toctree-l2"><a class="reference internal" href="gandiva.html">Gandiva Expression Compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">Tensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="utilities.html">Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="async.html">Asynchronous programming</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">Input / output</a></li>
<li class="toctree-l2"><a class="reference internal" href="ipc.html">Arrow IPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="formats.html">File Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="cuda.html">CUDA support</a></li>
<li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="flightsql.html">Arrow Flight SQL</a></li>
<li class="toctree-l2"><a class="reference internal" href="filesystem.html">Filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">C++ Implementation</a></li>
<li class="breadcrumb-item"><a href="../api.html" class="nav-link">API Reference</a></li>
<li class="breadcrumb-item active" aria-current="page">Input / output</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="input-output">
<h1>Input / output<a class="headerlink" href="#input-output" title="Permalink to this heading">#</a></h1>
<section id="interfaces">
<h2>Interfaces<a class="headerlink" href="#interfaces" title="Permalink to this heading">#</a></h2>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io13FileInterfaceE">
<span id="_CPPv3N5arrow2io13FileInterfaceE"></span><span id="_CPPv2N5arrow2io13FileInterfaceE"></span><span id="arrow::io::FileInterface"></span><span class="target" id="classarrow_1_1io_1_1_file_interface"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FileInterface</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">enable_shared_from_this</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io13FileInterfaceE" title="arrow::io::FileInterface"><span class="n"><span class="pre">FileInterface</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow2io13FileInterfaceE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">arrow::io::InputStream</span></a>, <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">arrow::io::OutputStream</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io13FileInterface5CloseEv">
<span id="_CPPv3N5arrow2io13FileInterface5CloseEv"></span><span id="_CPPv2N5arrow2io13FileInterface5CloseEv"></span><span id="arrow::io::FileInterface::Close"></span><span class="target" id="classarrow_1_1io_1_1_file_interface_1ae0f46d227a430af180576715e7aa0b78"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow2io13FileInterface5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1ae0f46d227a430af180576715e7aa0b78"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1a5ba1d2c3cec2e05e7b0018624f19c10b"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io13FileInterface10CloseAsyncEv">
<span id="_CPPv3N5arrow2io13FileInterface10CloseAsyncEv"></span><span id="_CPPv2N5arrow2io13FileInterface10CloseAsyncEv"></span><span id="arrow::io::FileInterface::CloseAsync"></span><span class="target" id="classarrow_1_1io_1_1_file_interface_1a13bebac8de639f12a7905391f5dc206b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CloseAsync</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io13FileInterface10CloseAsyncEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream asynchronously. </p>
<p>By default, this will just submit the synchronous <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1ae0f46d227a430af180576715e7aa0b78"><span class="std std-ref">Close()</span></a> to the default I/O thread pool. Subclasses may implement this in a more efficient manner. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io13FileInterface5AbortEv">
<span id="_CPPv3N5arrow2io13FileInterface5AbortEv"></span><span id="_CPPv2N5arrow2io13FileInterface5AbortEv"></span><span id="arrow::io::FileInterface::Abort"></span><span class="target" id="classarrow_1_1io_1_1_file_interface_1a0fa59fe92d3c99c9d9701210626aac60"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Abort</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io13FileInterface5AbortEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream abruptly. </p>
<p>This method does not guarantee that any pending data is flushed. It merely releases any underlying resource used by the stream for its operation.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1a0fa59fe92d3c99c9d9701210626aac60"><span class="std std-ref">Abort()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1a5ba1d2c3cec2e05e7b0018624f19c10b"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io13FileInterface4TellEv">
<span id="_CPPv3NK5arrow2io13FileInterface4TellEv"></span><span id="_CPPv2NK5arrow2io13FileInterface4TellEv"></span><span id="arrow::io::FileInterface::TellC"></span><span class="target" id="classarrow_1_1io_1_1_file_interface_1ac6c6709147a46cd7f45d0779c1819ce6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io13FileInterface4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io13FileInterface6closedEv">
<span id="_CPPv3NK5arrow2io13FileInterface6closedEv"></span><span id="_CPPv2NK5arrow2io13FileInterface6closedEv"></span><span id="arrow::io::FileInterface::closedC"></span><span class="target" id="classarrow_1_1io_1_1_file_interface_1a5ba1d2c3cec2e05e7b0018624f19c10b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io13FileInterface6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8ReadableE">
<span id="_CPPv3N5arrow2io8ReadableE"></span><span id="_CPPv2N5arrow2io8ReadableE"></span><span id="arrow::io::Readable"></span><span class="target" id="classarrow_1_1io_1_1_readable"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Readable</span></span></span><a class="headerlink" href="#_CPPv4N5arrow2io8ReadableE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">arrow::io::InputStream</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8Readable4ReadE7int64_tPv">
<span id="_CPPv3N5arrow2io8Readable4ReadE7int64_tPv"></span><span id="_CPPv2N5arrow2io8Readable4ReadE7int64_tPv"></span><span id="arrow::io::Readable::Read__int64_t.voidP"></span><span class="target" id="classarrow_1_1io_1_1_readable_1ab94d6d47006df39f6cf77c078a61b8d8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow2io8Readable4ReadE7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position into <code class="docutils literal notranslate"><span class="pre">out</span></code>. The number of bytes read is returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8Readable4ReadE7int64_t">
<span id="_CPPv3N5arrow2io8Readable4ReadE7int64_t"></span><span id="_CPPv2N5arrow2io8Readable4ReadE7int64_t"></span><span id="arrow::io::Readable::Read__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_readable_1aca2d005299c3af1092bedff34b5b015b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow2io8Readable4ReadE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position. Less bytes may be read if EOF is reached. This method updates the current file position.</p>
<p>In some cases (e.g. a memory-mapped file), this method may avoid a memory copy. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io8Readable10io_contextEv">
<span id="_CPPv3NK5arrow2io8Readable10io_contextEv"></span><span id="_CPPv2NK5arrow2io8Readable10io_contextEv"></span><span id="arrow::io::Readable::io_contextC"></span><span class="target" id="classarrow_1_1io_1_1_readable_1aa38b59cf3b63ca620d96679ef77bd96f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">io_context</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io8Readable10io_contextEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: The IOContext associated with this file. </p>
<p>By default, this is the same as default_io_context(), but it may be overridden by subclasses. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8SeekableE">
<span id="_CPPv3N5arrow2io8SeekableE"></span><span id="_CPPv2N5arrow2io8SeekableE"></span><span id="arrow::io::Seekable"></span><span class="target" id="classarrow_1_1io_1_1_seekable"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Seekable</span></span></span><a class="headerlink" href="#_CPPv4N5arrow2io8SeekableE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file"><span class="std std-ref">arrow::io::RandomAccessFile</span></a>, arrow::io::WritableFile</p>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8WritableE">
<span id="_CPPv3N5arrow2io8WritableE"></span><span id="_CPPv2N5arrow2io8WritableE"></span><span id="arrow::io::Writable"></span><span class="target" id="classarrow_1_1io_1_1_writable"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Writable</span></span></span><a class="headerlink" href="#_CPPv4N5arrow2io8WritableE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">arrow::io::OutputStream</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8Writable5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io8Writable5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io8Writable5WriteEPKv7int64_t"></span><span id="arrow::io::Writable::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_writable_1a51d9feed73c33f095ca4b9f35dede84d"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow2io8Writable5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8Writable5WriteERKNSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow2io8Writable5WriteERKNSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow2io8Writable5WriteERKNSt10shared_ptrI6BufferEE"></span><span id="arrow::io::Writable::Write__std::shared_ptr:Buffer:CR"></span><span class="target" id="classarrow_1_1io_1_1_writable_1a048bbc5e85b1d739bc49c57553e85069"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io8Writable5WriteERKNSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>Since the <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> owns its memory, this method can avoid a copy if buffering is required. See <a class="reference internal" href="#classarrow_1_1io_1_1_writable_1a51d9feed73c33f095ca4b9f35dede84d"><span class="std std-ref">Write(const void*, int64_t)</span></a> for details. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io8Writable5FlushEv">
<span id="_CPPv3N5arrow2io8Writable5FlushEv"></span><span id="_CPPv2N5arrow2io8Writable5FlushEv"></span><span id="arrow::io::Writable::Flush"></span><span class="target" id="classarrow_1_1io_1_1_writable_1a06e513a551f68603013c1586ba8b939f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Flush</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io8Writable5FlushEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Flush buffered bytes, if any. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io11InputStreamE">
<span id="_CPPv3N5arrow2io11InputStreamE"></span><span id="_CPPv2N5arrow2io11InputStreamE"></span><span id="arrow::io::InputStream"></span><span class="target" id="classarrow_1_1io_1_1_input_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">InputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io13FileInterfaceE" title="arrow::io::FileInterface"><span class="n"><span class="pre">FileInterface</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io8ReadableE" title="arrow::io::Readable"><span class="n"><span class="pre">Readable</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io11InputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by arrow::io::SlowInputStreamBase&lt; InputStream &gt;, arrow::io::internal::InputStreamConcurrencyWrapper&lt; CompressedInputStream &gt;, arrow::io::internal::InputStreamConcurrencyWrapper&lt; BufferedInputStream &gt;, <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file"><span class="std std-ref">arrow::io::RandomAccessFile</span></a>, arrow::io::StdinStream, <a class="reference internal" href="#classarrow_1_1io_1_1_transform_input_stream"><span class="std std-ref">arrow::io::TransformInputStream</span></a>, arrow::io::internal::InputStreamConcurrencyWrapper&lt; Derived &gt;</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io11InputStream7AdvanceE7int64_t">
<span id="_CPPv3N5arrow2io11InputStream7AdvanceE7int64_t"></span><span id="_CPPv2N5arrow2io11InputStream7AdvanceE7int64_t"></span><span id="arrow::io::InputStream::Advance__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_input_stream_1ab5e2e1bdb05f7847363461bc3b90d386"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Advance</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io11InputStream7AdvanceE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Advance or skip stream indicated number of bytes. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>nbytes</strong><strong>[in]</strong> the number to move forward </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io11InputStream4PeekE7int64_t">
<span id="_CPPv3N5arrow2io11InputStream4PeekE7int64_t"></span><span id="_CPPv2N5arrow2io11InputStream4PeekE7int64_t"></span><span id="arrow::io::InputStream::Peek__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_input_stream_1a2a11de6a1448c25853769b11321b7cef"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string_view</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Peek</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io11InputStream4PeekE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return zero-copy string_view to upcoming bytes. </p>
<p>Do not modify the stream position. The view becomes invalid after any operation on the stream. May trigger buffering if the requested size is larger than the number of buffered bytes.</p>
<p>May return NotImplemented on streams that don’t support it.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>nbytes</strong><strong>[in]</strong> the maximum number of bytes to see </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io11InputStream18supports_zero_copyEv">
<span id="_CPPv3NK5arrow2io11InputStream18supports_zero_copyEv"></span><span id="_CPPv2NK5arrow2io11InputStream18supports_zero_copyEv"></span><span id="arrow::io::InputStream::supports_zero_copyC"></span><span class="target" id="classarrow_1_1io_1_1_input_stream_1a2b9978739db7fa75ba81e794bfba2a64"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">supports_zero_copy</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io11InputStream18supports_zero_copyEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a> is capable of zero copy <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> reads. </p>
<p>Zero copy reads imply the use of Buffer-returning <a class="reference internal" href="#classarrow_1_1io_1_1_readable_1ab94d6d47006df39f6cf77c078a61b8d8"><span class="std std-ref">Read()</span></a> overloads. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io11InputStream12ReadMetadataEv">
<span id="_CPPv3N5arrow2io11InputStream12ReadMetadataEv"></span><span id="_CPPv2N5arrow2io11InputStream12ReadMetadataEv"></span><span id="arrow::io::InputStream::ReadMetadata"></span><span class="target" id="classarrow_1_1io_1_1_input_stream_1a078a402d30eb3e2fe853132879121d11"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadata</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io11InputStream12ReadMetadataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read and return stream metadata. </p>
<p>If the stream implementation doesn’t support metadata, empty metadata is returned. Note that it is allowed to return a null pointer rather than an allocated empty metadata. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io11InputStream17ReadMetadataAsyncERK9IOContext">
<span id="_CPPv3N5arrow2io11InputStream17ReadMetadataAsyncERK9IOContext"></span><span id="_CPPv2N5arrow2io11InputStream17ReadMetadataAsyncERK9IOContext"></span><span id="arrow::io::InputStream::ReadMetadataAsync__IOContextCR"></span><span class="target" id="classarrow_1_1io_1_1_input_stream_1aa12f6eddcf5d0ef777b3bbdd37f7ba8a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadataAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">io_context</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io11InputStream17ReadMetadataAsyncERK9IOContext" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read stream metadata asynchronously. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFileE">
<span id="_CPPv3N5arrow2io16RandomAccessFileE"></span><span id="_CPPv2N5arrow2io16RandomAccessFileE"></span><span id="arrow::io::RandomAccessFile"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RandomAccessFile</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io8SeekableE" title="arrow::io::Seekable"><span class="n"><span class="pre">Seekable</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFileE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by arrow::io::SlowInputStreamBase&lt; RandomAccessFile &gt;, arrow::io::internal::RandomAccessFileConcurrencyWrapper&lt; ReadableFile &gt;, arrow::io::internal::RandomAccessFileConcurrencyWrapper&lt; CudaBufferReader &gt;, arrow::io::internal::RandomAccessFileConcurrencyWrapper&lt; BufferReader &gt;, arrow::io::HdfsReadableFile, <a class="reference internal" href="#classarrow_1_1io_1_1_read_write_file_interface"><span class="std std-ref">arrow::io::ReadWriteFileInterface</span></a>, arrow::io::internal::RandomAccessFileConcurrencyWrapper&lt; Derived &gt;</p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFileD0Ev">
<span id="_CPPv3N5arrow2io16RandomAccessFileD0Ev"></span><span id="_CPPv2N5arrow2io16RandomAccessFileD0Ev"></span><span id="arrow::io::RandomAccessFile::~RandomAccessFile"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a30c6917dfe0b6e508dac2ecc81917187"></span><span class="sig-name descname"><span class="n"><span class="pre">~RandomAccessFile</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFileD0Ev" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Necessary because we hold a std::unique_ptr. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile7GetSizeEv">
<span id="_CPPv3N5arrow2io16RandomAccessFile7GetSizeEv"></span><span id="_CPPv2N5arrow2io16RandomAccessFile7GetSizeEv"></span><span id="arrow::io::RandomAccessFile::GetSize"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a2a476c2a6ad474e123d1aab20be289c4"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile7GetSizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the total file size in bytes. </p>
<p>This method does not read or move the current file position, so is safe to call concurrently with e.g. <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1adb9d40656e516d6b77ee2bdfc00126f3"><span class="std std-ref">ReadAt()</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_tPv">
<span id="_CPPv3N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_tPv"></span><span id="_CPPv2N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_tPv"></span><span id="arrow::io::RandomAccessFile::ReadAt__int64_t.int64_t.voidP"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1adb9d40656e516d6b77ee2bdfc00126f3"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from given file position. </p>
<p>At most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> bytes are read. The number of bytes read is returned (it can be less than <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> if EOF is reached).</p>
<p>This method can be safely called from multiple threads concurrently. It is unspecified whether this method updates the file position or not.</p>
<p>The default RandomAccessFile-provided implementation uses Seek() and <a class="reference internal" href="#classarrow_1_1io_1_1_readable_1ab94d6d47006df39f6cf77c078a61b8d8"><span class="std std-ref">Read()</span></a>, but subclasses may override it with a more efficient implementation that doesn’t depend on implicit file positioning.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> Where to read bytes from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> The number of bytes to read </p></li>
<li><p><strong>out</strong><strong>[out]</strong> The buffer to read bytes into </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The number of bytes read, or an error </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_t"></span><span id="arrow::io::RandomAccessFile::ReadAt__int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a562433f2be06021acb9abd20bd5a8219"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile6ReadAtE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from given file position. </p>
<p>At most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> bytes are read, but it can be less if EOF is reached.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> Where to read bytes from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> The number of bytes to read </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>A buffer containing the bytes read, or an error </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile9ReadAsyncERK9IOContext7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16RandomAccessFile9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16RandomAccessFile9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="arrow::io::RandomAccessFile::ReadAsync__IOContextCR.int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a1b91bcc59335ae5cc681254429e2b9a6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="p"><span class="pre">&amp;</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile9ReadAsyncERK9IOContext7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Read data asynchronously. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile9ReadAsyncE7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16RandomAccessFile9ReadAsyncE7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16RandomAccessFile9ReadAsyncE7int64_t7int64_t"></span><span id="arrow::io::RandomAccessFile::ReadAsync__int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a8e4829346289cb8359e15ff680a7b07d"></span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAsync</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile9ReadAsyncE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Read data asynchronously, using the file’s IOContext. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile13ReadManyAsyncERK9IOContextRKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io16RandomAccessFile13ReadManyAsyncERK9IOContextRKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io16RandomAccessFile13ReadManyAsyncERK9IOContextRKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::RandomAccessFile::ReadManyAsync__IOContextCR.std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a12a37eb569adede1525d53df83188ed6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadManyAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="p"><span class="pre">&amp;</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile13ReadManyAsyncERK9IOContextRKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Explicit multi-read. </p>
<p>Request multiple reads at once</p>
<p>The underlying filesystem may optimize these reads by coalescing small reads into large reads or by breaking up large reads into multiple parallel smaller reads. The reads should be issued in parallel if it makes sense for the filesystem.</p>
<p>One future will be returned for each input read range. Multiple returned futures may correspond to a single read. Or, a single returned future may be a combined result of several individual reads.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ranges</strong><strong>[in]</strong> The ranges to read </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>A future that will complete with the data from the requested range is available </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile13ReadManyAsyncERKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io16RandomAccessFile13ReadManyAsyncERKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io16RandomAccessFile13ReadManyAsyncERKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::RandomAccessFile::ReadManyAsync__std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a9dd6de05d5dee81ebc243edb45fa58fd"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadManyAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile13ReadManyAsyncERKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Explicit multi-read, using the file’s IOContext. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile8WillNeedERKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io16RandomAccessFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io16RandomAccessFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::RandomAccessFile::WillNeed__std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1ad65764b247e8f999c330aa106d72a988"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WillNeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile8WillNeedERKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Inform that the given ranges may be read soon. </p>
<p>Some implementations might arrange to prefetch some of the data. However, no guarantee is made and the default implementation does nothing. For robust prefetching, use <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1adb9d40656e516d6b77ee2bdfc00126f3"><span class="std std-ref">ReadAt()</span></a> or <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1a1b91bcc59335ae5cc681254429e2b9a6"><span class="std std-ref">ReadAsync()</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16RandomAccessFile9GetStreamENSt10shared_ptrI16RandomAccessFileEE7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16RandomAccessFile9GetStreamENSt10shared_ptrI16RandomAccessFileEE7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16RandomAccessFile9GetStreamENSt10shared_ptrI16RandomAccessFileEE7int64_t7int64_t"></span><span id="arrow::io::RandomAccessFile::GetStream__std::shared_ptr:RandomAccessFile:.int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_random_access_file_1a23b5aa9fbf773d827bc2039be96a515d"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetStream</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">file</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">file_offset</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16RandomAccessFile9GetStreamENSt10shared_ptrI16RandomAccessFileEE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create an isolated <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a> that reads a segment of a <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file"><span class="std std-ref">RandomAccessFile</span></a>. </p>
<p>Multiple such stream can be created and used independently without interference </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>file</strong><strong>[in]</strong> a file instance </p></li>
<li><p><strong>file_offset</strong><strong>[in]</strong> the starting position in the file </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> the extent of bytes to read. The file should have sufficient bytes available </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12OutputStreamE">
<span id="_CPPv3N5arrow2io12OutputStreamE"></span><span id="_CPPv2N5arrow2io12OutputStreamE"></span><span id="arrow::io::OutputStream"></span><span class="target" id="classarrow_1_1io_1_1_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">OutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io13FileInterfaceE" title="arrow::io::FileInterface"><span class="n"><span class="pre">FileInterface</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io8WritableE" title="arrow::io::Writable"><span class="n"><span class="pre">Writable</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io12OutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_buffer_output_stream"><span class="std std-ref">arrow::io::BufferOutputStream</span></a>, <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_output_stream"><span class="std std-ref">arrow::io::BufferedOutputStream</span></a>, <a class="reference internal" href="#classarrow_1_1io_1_1_compressed_output_stream"><span class="std std-ref">arrow::io::CompressedOutputStream</span></a>, <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream"><span class="std std-ref">arrow::io::FileOutputStream</span></a>, arrow::io::HdfsOutputStream, <a class="reference internal" href="#classarrow_1_1io_1_1_mock_output_stream"><span class="std std-ref">arrow::io::MockOutputStream</span></a>, arrow::io::StderrStream, arrow::io::StdoutStream, arrow::io::WritableFile</p>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22ReadWriteFileInterfaceE">
<span id="_CPPv3N5arrow2io22ReadWriteFileInterfaceE"></span><span id="_CPPv2N5arrow2io22ReadWriteFileInterfaceE"></span><span id="arrow::io::ReadWriteFileInterface"></span><span class="target" id="classarrow_1_1io_1_1_read_write_file_interface"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadWriteFileInterface</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io16RandomAccessFileE" title="arrow::io::RandomAccessFile"><span class="n"><span class="pre">RandomAccessFile</span></span></a><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">WritableFile</span></span><a class="headerlink" href="#_CPPv4N5arrow2io22ReadWriteFileInterfaceE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file"><span class="std std-ref">arrow::io::MemoryMappedFile</span></a></p>
</dd></dl>
</section>
<section id="concrete-implementations">
<h2>Concrete implementations<a class="headerlink" href="#concrete-implementations" title="Permalink to this heading">#</a></h2>
<section id="in-memory-streams">
<h3>In-memory streams<a class="headerlink" href="#in-memory-streams" title="Permalink to this heading">#</a></h3>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReaderE">
<span id="_CPPv3N5arrow2io12BufferReaderE"></span><span id="_CPPv2N5arrow2io12BufferReaderE"></span><span id="arrow::io::BufferReader"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferReader</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">RandomAccessFileConcurrencyWrapper</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12BufferReaderE" title="arrow::io::BufferReader"><span class="n"><span class="pre">BufferReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReaderE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Random access zero-copy reads on an <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">arrow::Buffer</span></a>. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReader12BufferReaderENSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow2io12BufferReader12BufferReaderENSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow2io12BufferReader12BufferReaderENSt10shared_ptrI6BufferEE"></span><span id="arrow::io::BufferReader::BufferReader__std::shared_ptr:Buffer:"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1a865781f99a97bfd546e8fe5361f815af"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReader12BufferReaderENSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Instantiate from std::shared_ptr&lt;Buffer&gt;. </p>
<p>This is a zero-copy constructor. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReader12BufferReaderENSt11string_viewE">
<span id="_CPPv3N5arrow2io12BufferReader12BufferReaderENSt11string_viewE"></span><span id="_CPPv2N5arrow2io12BufferReader12BufferReaderENSt11string_viewE"></span><span id="arrow::io::BufferReader::BufferReader__std::string_view"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1a7815925191e1472edd97d9b09305ecf7"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferReader</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string_view</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReader12BufferReaderENSt11string_viewE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Instantiate from std::string_view. </p>
<p>Does not own data <dl>
<dt class="sig sig-object cpp">
<em><span class="pre">Deprecated:</span></em></dt>
<dd><p>Deprecated in 14.0.0. Use FromString or <a class="reference internal" href="#classarrow_1_1io_1_1_buffer_reader_1a865781f99a97bfd546e8fe5361f815af"><span class="std std-ref">BufferReader(std::shared_ptr&lt;Buffer&gt; buffer)</span></a> instead. </p>
</dd></dl>
</p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io12BufferReader6closedEv">
<span id="_CPPv3NK5arrow2io12BufferReader6closedEv"></span><span id="_CPPv2NK5arrow2io12BufferReader6closedEv"></span><span id="arrow::io::BufferReader::closedC"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1a1f3192bdac4ac4739c26ef041f6387ee"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io12BufferReader6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io12BufferReader18supports_zero_copyEv">
<span id="_CPPv3NK5arrow2io12BufferReader18supports_zero_copyEv"></span><span id="_CPPv2NK5arrow2io12BufferReader18supports_zero_copyEv"></span><span id="arrow::io::BufferReader::supports_zero_copyC"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1a3807b37ca7cbb78635b9f4acc2bb27d0"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">supports_zero_copy</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io12BufferReader18supports_zero_copyEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a> is capable of zero copy <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> reads. </p>
<p>Zero copy reads imply the use of Buffer-returning <a class="reference internal" href="#classarrow_1_1io_1_1_readable_1ab94d6d47006df39f6cf77c078a61b8d8"><span class="std std-ref">Read()</span></a> overloads. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReader9ReadAsyncERK9IOContext7int64_t7int64_t">
<span id="_CPPv3N5arrow2io12BufferReader9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io12BufferReader9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="arrow::io::BufferReader::ReadAsync__IOContextCR.int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1a46c439cae821d279db63446d3cf1e90c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="p"><span class="pre">&amp;</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReader9ReadAsyncERK9IOContext7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Read data asynchronously. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReader8WillNeedERKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io12BufferReader8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io12BufferReader8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::BufferReader::WillNeed__std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1aa6955b1df534b42b207f62dad3370791"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WillNeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReader8WillNeedERKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Inform that the given ranges may be read soon. </p>
<p>Some implementations might arrange to prefetch some of the data. However, no guarantee is made and the default implementation does nothing. For robust prefetching, use <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1adb9d40656e516d6b77ee2bdfc00126f3"><span class="std std-ref">ReadAt()</span></a> or <a class="reference internal" href="#classarrow_1_1io_1_1_buffer_reader_1a46c439cae821d279db63446d3cf1e90c"><span class="std std-ref">ReadAsync()</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12BufferReader10FromStringENSt6stringE">
<span id="_CPPv3N5arrow2io12BufferReader10FromStringENSt6stringE"></span><span id="_CPPv2N5arrow2io12BufferReader10FromStringENSt6stringE"></span><span id="arrow::io::BufferReader::FromString__ss"></span><span class="target" id="classarrow_1_1io_1_1_buffer_reader_1aacf0c6c0c7344fdc4f0ed5e647e907bc"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">unique_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12BufferReaderE" title="arrow::io::BufferReader"><span class="n"><span class="pre">BufferReader</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FromString</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io12BufferReader10FromStringENSt6stringE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Instantiate from std::string. Owns data. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MockOutputStreamE">
<span id="_CPPv3N5arrow2io16MockOutputStreamE"></span><span id="_CPPv2N5arrow2io16MockOutputStreamE"></span><span id="arrow::io::MockOutputStream"></span><span class="target" id="classarrow_1_1io_1_1_mock_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MockOutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io16MockOutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A helper class to track the size of allocations. </p>
<p>Writes to this stream do not copy or retain any data, they just bump a size counter that can be later used to know exactly which data size needs to be allocated for actual writing. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MockOutputStream5CloseEv">
<span id="_CPPv3N5arrow2io16MockOutputStream5CloseEv"></span><span id="_CPPv2N5arrow2io16MockOutputStream5CloseEv"></span><span id="arrow::io::MockOutputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_mock_output_stream_1ace3c697a51836d1d9ac31cda18089843"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MockOutputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_mock_output_stream_1ace3c697a51836d1d9ac31cda18089843"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_mock_output_stream_1a15c20485d58b06a8c82ee71af1d4bfa6"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16MockOutputStream6closedEv">
<span id="_CPPv3NK5arrow2io16MockOutputStream6closedEv"></span><span id="_CPPv2NK5arrow2io16MockOutputStream6closedEv"></span><span id="arrow::io::MockOutputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_mock_output_stream_1a15c20485d58b06a8c82ee71af1d4bfa6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16MockOutputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16MockOutputStream4TellEv">
<span id="_CPPv3NK5arrow2io16MockOutputStream4TellEv"></span><span id="_CPPv2NK5arrow2io16MockOutputStream4TellEv"></span><span id="arrow::io::MockOutputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_mock_output_stream_1ad37eeb46671d5b246372bafcf848e797"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16MockOutputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MockOutputStream5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io16MockOutputStream5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io16MockOutputStream5WriteEPKv7int64_t"></span><span id="arrow::io::MockOutputStream::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_mock_output_stream_1a1eaec4069a49129bed7af3476128526f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MockOutputStream5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStreamE">
<span id="_CPPv3N5arrow2io18BufferOutputStreamE"></span><span id="_CPPv2N5arrow2io18BufferOutputStreamE"></span><span id="arrow::io::BufferOutputStream"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferOutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An output stream that writes to a resizable buffer. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStream5CloseEv">
<span id="_CPPv3N5arrow2io18BufferOutputStream5CloseEv"></span><span id="_CPPv2N5arrow2io18BufferOutputStream5CloseEv"></span><span id="arrow::io::BufferOutputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1aae54be3eb7dcb37dabe7618623c52e94"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream, preserving the buffer (retrieve it with <a class="reference internal" href="#classarrow_1_1io_1_1_buffer_output_stream_1a2134ef7ac4fe7913f954e69929a7010a"><span class="std std-ref">Finish()</span></a>). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io18BufferOutputStream6closedEv">
<span id="_CPPv3NK5arrow2io18BufferOutputStream6closedEv"></span><span id="_CPPv2NK5arrow2io18BufferOutputStream6closedEv"></span><span id="arrow::io::BufferOutputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1ab87ed9577b7ab013e072f98628d3def4"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io18BufferOutputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io18BufferOutputStream4TellEv">
<span id="_CPPv3NK5arrow2io18BufferOutputStream4TellEv"></span><span id="_CPPv2NK5arrow2io18BufferOutputStream4TellEv"></span><span id="arrow::io::BufferOutputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1a040dc81f53967d471cb8fad3b53fb088"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io18BufferOutputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStream5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io18BufferOutputStream5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io18BufferOutputStream5WriteEPKv7int64_t"></span><span id="arrow::io::BufferOutputStream::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1a8e637f158713cbc254e714d83a5710d9"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStream5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStream6FinishEv">
<span id="_CPPv3N5arrow2io18BufferOutputStream6FinishEv"></span><span id="_CPPv2N5arrow2io18BufferOutputStream6FinishEv"></span><span id="arrow::io::BufferOutputStream::Finish"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1a2134ef7ac4fe7913f954e69929a7010a"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Finish</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStream6FinishEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream and return the buffer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStream5ResetE7int64_tP10MemoryPool">
<span id="_CPPv3N5arrow2io18BufferOutputStream5ResetE7int64_tP10MemoryPool"></span><span id="_CPPv2N5arrow2io18BufferOutputStream5ResetE7int64_tP10MemoryPool"></span><span id="arrow::io::BufferOutputStream::Reset__int64_t.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1ab091b19b1d87cfcc5586f7d31773a74d"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Reset</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">initial_capacity</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1024</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStream5ResetE7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Initialize state of <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a> with newly allocated memory and set position to 0. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_capacity</strong><strong>[in]</strong> the starting allocated capacity </p></li>
<li><p><strong>pool</strong><strong>[inout]</strong> the memory pool to use for allocations </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io18BufferOutputStream6CreateE7int64_tP10MemoryPool">
<span id="_CPPv3N5arrow2io18BufferOutputStream6CreateE7int64_tP10MemoryPool"></span><span id="_CPPv2N5arrow2io18BufferOutputStream6CreateE7int64_tP10MemoryPool"></span><span id="arrow::io::BufferOutputStream::Create__int64_t.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_buffer_output_stream_1a8e587b9472f17f89760aa1ea26c8bd6c"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io18BufferOutputStreamE" title="arrow::io::BufferOutputStream"><span class="n"><span class="pre">BufferOutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Create</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">initial_capacity</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">4096</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io18BufferOutputStream6CreateE7int64_tP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create in-memory output stream with indicated capacity using a memory pool. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_capacity</strong><strong>[in]</strong> the initial allocated internal capacity of the <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a></p></li>
<li><p><strong>pool</strong><strong>[inout]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to use for allocations </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created stream </p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21FixedSizeBufferWriterE">
<span id="_CPPv3N5arrow2io21FixedSizeBufferWriterE"></span><span id="_CPPv2N5arrow2io21FixedSizeBufferWriterE"></span><span id="arrow::io::FixedSizeBufferWriter"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FixedSizeBufferWriter</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">WritableFile</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21FixedSizeBufferWriterE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An output stream that writes into a fixed-size mutable buffer. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21FixedSizeBufferWriter21FixedSizeBufferWriterERKNSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow2io21FixedSizeBufferWriter21FixedSizeBufferWriterERKNSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow2io21FixedSizeBufferWriter21FixedSizeBufferWriterERKNSt10shared_ptrI6BufferEE"></span><span id="arrow::io::FixedSizeBufferWriter::FixedSizeBufferWriter__std::shared_ptr:Buffer:CR"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer_1a54aacd40e26b32dbe6bc52669adf1045"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FixedSizeBufferWriter</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">buffer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io21FixedSizeBufferWriter21FixedSizeBufferWriterERKNSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Input buffer must be mutable, will abort if not. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21FixedSizeBufferWriter5CloseEv">
<span id="_CPPv3N5arrow2io21FixedSizeBufferWriter5CloseEv"></span><span id="_CPPv2N5arrow2io21FixedSizeBufferWriter5CloseEv"></span><span id="arrow::io::FixedSizeBufferWriter::Close"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer_1a23897d9eb4988d489f7e8a444211a54f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21FixedSizeBufferWriter5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_fixed_size_buffer_writer_1a23897d9eb4988d489f7e8a444211a54f"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_fixed_size_buffer_writer_1a2058a1392d03ff754f3fbe00c5f84263"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io21FixedSizeBufferWriter6closedEv">
<span id="_CPPv3NK5arrow2io21FixedSizeBufferWriter6closedEv"></span><span id="_CPPv2NK5arrow2io21FixedSizeBufferWriter6closedEv"></span><span id="arrow::io::FixedSizeBufferWriter::closedC"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer_1a2058a1392d03ff754f3fbe00c5f84263"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io21FixedSizeBufferWriter6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io21FixedSizeBufferWriter4TellEv">
<span id="_CPPv3NK5arrow2io21FixedSizeBufferWriter4TellEv"></span><span id="_CPPv2NK5arrow2io21FixedSizeBufferWriter4TellEv"></span><span id="arrow::io::FixedSizeBufferWriter::TellC"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer_1a5bcd09d7754b10701b091098c4762711"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io21FixedSizeBufferWriter4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21FixedSizeBufferWriter5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io21FixedSizeBufferWriter5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io21FixedSizeBufferWriter5WriteEPKv7int64_t"></span><span id="arrow::io::FixedSizeBufferWriter::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_fixed_size_buffer_writer_1a5b4d5f27023b1e90fa33c72c867bf88b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21FixedSizeBufferWriter5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="local-files">
<h3>Local files<a class="headerlink" href="#local-files" title="Permalink to this heading">#</a></h3>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12ReadableFileE">
<span id="_CPPv3N5arrow2io12ReadableFileE"></span><span id="_CPPv2N5arrow2io12ReadableFileE"></span><span id="arrow::io::ReadableFile"></span><span class="target" id="classarrow_1_1io_1_1_readable_file"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadableFile</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">RandomAccessFileConcurrencyWrapper</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12ReadableFileE" title="arrow::io::ReadableFile"><span class="n"><span class="pre">ReadableFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow2io12ReadableFileE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An operating system file open in read-only mode. </p>
<p>Reads through this implementation are unbuffered. If many small reads need to be issued, it is recommended to use a buffering layer for good performance. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io12ReadableFile6closedEv">
<span id="_CPPv3NK5arrow2io12ReadableFile6closedEv"></span><span id="_CPPv2NK5arrow2io12ReadableFile6closedEv"></span><span id="arrow::io::ReadableFile::closedC"></span><span class="target" id="classarrow_1_1io_1_1_readable_file_1aeb1f2f17a1373e4bd9ae6e38e84d12d2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io12ReadableFile6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12ReadableFile8WillNeedERKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io12ReadableFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io12ReadableFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::ReadableFile::WillNeed__std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_readable_file_1ab1b809276c99b47399d5d7072ccaf71b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WillNeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io12ReadableFile8WillNeedERKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Inform that the given ranges may be read soon. </p>
<p>Some implementations might arrange to prefetch some of the data. However, no guarantee is made and the default implementation does nothing. For robust prefetching, use <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1adb9d40656e516d6b77ee2bdfc00126f3"><span class="std std-ref">ReadAt()</span></a> or <a class="reference internal" href="#classarrow_1_1io_1_1_random_access_file_1a1b91bcc59335ae5cc681254429e2b9a6"><span class="std std-ref">ReadAsync()</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12ReadableFile4OpenERKNSt6stringEP10MemoryPool">
<span id="_CPPv3N5arrow2io12ReadableFile4OpenERKNSt6stringEP10MemoryPool"></span><span id="_CPPv2N5arrow2io12ReadableFile4OpenERKNSt6stringEP10MemoryPool"></span><span id="arrow::io::ReadableFile::Open__ssCR.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_readable_file_1a8ea5d570ce650efc53904dc42819afce"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12ReadableFileE" title="arrow::io::ReadableFile"><span class="n"><span class="pre">ReadableFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">path</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io12ReadableFile4OpenERKNSt6stringEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a local file for reading. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong><strong>[in]</strong> with UTF8 encoding </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> for memory allocations </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#classarrow_1_1io_1_1_readable_file"><span class="std std-ref">ReadableFile</span></a> instance </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io12ReadableFile4OpenEiP10MemoryPool">
<span id="_CPPv3N5arrow2io12ReadableFile4OpenEiP10MemoryPool"></span><span id="_CPPv2N5arrow2io12ReadableFile4OpenEiP10MemoryPool"></span><span id="arrow::io::ReadableFile::Open__i.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_readable_file_1a4f5392048d135e7df52eb74738136e97"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12ReadableFileE" title="arrow::io::ReadableFile"><span class="n"><span class="pre">ReadableFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">fd</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io12ReadableFile4OpenEiP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a local file for reading. </p>
<p>
The file descriptor becomes owned by the <a class="reference internal" href="#classarrow_1_1io_1_1_readable_file"><span class="std std-ref">ReadableFile</span></a>, and will be closed on <a class="reference internal" href="#classarrow_1_1io_1_1_file_interface_1ae0f46d227a430af180576715e7aa0b78"><span class="std std-ref">Close()</span></a> or destruction. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>fd</strong><strong>[in]</strong> file descriptor </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> for memory allocations </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#classarrow_1_1io_1_1_readable_file"><span class="std std-ref">ReadableFile</span></a> instance</p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16FileOutputStreamE">
<span id="_CPPv3N5arrow2io16FileOutputStreamE"></span><span id="_CPPv2N5arrow2io16FileOutputStreamE"></span><span id="arrow::io::FileOutputStream"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FileOutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io16FileOutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An operating system file open in write-only mode. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16FileOutputStream5CloseEv">
<span id="_CPPv3N5arrow2io16FileOutputStream5CloseEv"></span><span id="_CPPv2N5arrow2io16FileOutputStream5CloseEv"></span><span id="arrow::io::FileOutputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a4fdfa45d3271c43096508d09c30e08c2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16FileOutputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream_1a4fdfa45d3271c43096508d09c30e08c2"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream_1a94f90b0171ff2a53d80394165cf58d4a"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16FileOutputStream6closedEv">
<span id="_CPPv3NK5arrow2io16FileOutputStream6closedEv"></span><span id="_CPPv2NK5arrow2io16FileOutputStream6closedEv"></span><span id="arrow::io::FileOutputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a94f90b0171ff2a53d80394165cf58d4a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16FileOutputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16FileOutputStream4TellEv">
<span id="_CPPv3NK5arrow2io16FileOutputStream4TellEv"></span><span id="_CPPv2NK5arrow2io16FileOutputStream4TellEv"></span><span id="arrow::io::FileOutputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a270bfa60011624aebf9cec2b619cf6e8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16FileOutputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16FileOutputStream5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io16FileOutputStream5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io16FileOutputStream5WriteEPKv7int64_t"></span><span id="arrow::io::FileOutputStream::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a0f696e1c6827955c6306337b930247ca"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16FileOutputStream5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16FileOutputStream4OpenERKNSt6stringEb">
<span id="_CPPv3N5arrow2io16FileOutputStream4OpenERKNSt6stringEb"></span><span id="_CPPv2N5arrow2io16FileOutputStream4OpenERKNSt6stringEb"></span><span id="arrow::io::FileOutputStream::Open__ssCR.b"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a27363f7b230b20768be6d2f606667829"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io16FileOutputStreamE" title="arrow::io::FileOutputStream"><span class="n"><span class="pre">FileOutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">path</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">append</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16FileOutputStream4OpenERKNSt6stringEb" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a local file for writing, truncating any existing file. </p>
<p>
When opening a new file, any existing file with the indicated path is truncated to 0 bytes, deleting any existing data </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong><strong>[in]</strong> with UTF8 encoding </p></li>
<li><p><strong>append</strong><strong>[in]</strong> append to existing file, otherwise truncate to 0 bytes </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>an open <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream"><span class="std std-ref">FileOutputStream</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16FileOutputStream4OpenEi">
<span id="_CPPv3N5arrow2io16FileOutputStream4OpenEi"></span><span id="_CPPv2N5arrow2io16FileOutputStream4OpenEi"></span><span id="arrow::io::FileOutputStream::Open__i"></span><span class="target" id="classarrow_1_1io_1_1_file_output_stream_1a6096b1b7a24724e32fb6aa078f9fdd12"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io16FileOutputStreamE" title="arrow::io::FileOutputStream"><span class="n"><span class="pre">FileOutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Open</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">fd</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16FileOutputStream4OpenEi" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Open a file descriptor for writing. </p>
<p><p>The underlying file isn’t truncated.</p>
<p>The file descriptor becomes owned by the</p>
<a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a>, and will be closed on <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream_1a4fdfa45d3271c43096508d09c30e08c2"><span class="std std-ref">Close()</span></a> or destruction. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>fd</strong><strong>[in]</strong> file descriptor </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>an open <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream"><span class="std std-ref">FileOutputStream</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFileE">
<span id="_CPPv3N5arrow2io16MemoryMappedFileE"></span><span id="_CPPv2N5arrow2io16MemoryMappedFileE"></span><span id="arrow::io::MemoryMappedFile"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MemoryMappedFile</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io22ReadWriteFileInterfaceE" title="arrow::io::ReadWriteFileInterface"><span class="n"><span class="pre">ReadWriteFileInterface</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFileE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>A file interface that uses memory-mapped files for memory interactions. </p>
<p>This implementation supports zero-copy reads. The same class is used for both reading and writing.</p>
<p>If opening a file in a writable mode, it is not truncated first as with <a class="reference internal" href="#classarrow_1_1io_1_1_file_output_stream"><span class="std std-ref">FileOutputStream</span></a>. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile5CloseEv">
<span id="_CPPv3N5arrow2io16MemoryMappedFile5CloseEv"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile5CloseEv"></span><span id="arrow::io::MemoryMappedFile::Close"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a344ef060df35e0aad557946193119a05"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1a344ef060df35e0aad557946193119a05"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1ad1ed6c7dc1f2acc2b60bb6126cf144f5"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16MemoryMappedFile6closedEv">
<span id="_CPPv3NK5arrow2io16MemoryMappedFile6closedEv"></span><span id="_CPPv2NK5arrow2io16MemoryMappedFile6closedEv"></span><span id="arrow::io::MemoryMappedFile::closedC"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1ad1ed6c7dc1f2acc2b60bb6126cf144f5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16MemoryMappedFile6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16MemoryMappedFile4TellEv">
<span id="_CPPv3NK5arrow2io16MemoryMappedFile4TellEv"></span><span id="_CPPv2NK5arrow2io16MemoryMappedFile4TellEv"></span><span id="arrow::io::MemoryMappedFile::TellC"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a588a0a68a01f581ba9bfcaa7140b942e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16MemoryMappedFile4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile4ReadE7int64_tPv">
<span id="_CPPv3N5arrow2io16MemoryMappedFile4ReadE7int64_tPv"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile4ReadE7int64_tPv"></span><span id="arrow::io::MemoryMappedFile::Read__int64_t.voidP"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a83be46ee28680723283ba22c11fc7c41"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile4ReadE7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position into <code class="docutils literal notranslate"><span class="pre">out</span></code>. The number of bytes read is returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile4ReadE7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile4ReadE7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile4ReadE7int64_t"></span><span id="arrow::io::MemoryMappedFile::Read__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a2e9d0c63e19ef1148d5f5dfb976e6fbf"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile4ReadE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position. Less bytes may be read if EOF is reached. This method updates the current file position.</p>
<p>In some cases (e.g. a memory-mapped file), this method may avoid a memory copy. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_t"></span><span id="arrow::io::MemoryMappedFile::ReadAt__int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a511e515662f65b931ed181d6865f7629"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from given file position. </p>
<p>At most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> bytes are read, but it can be less if EOF is reached.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> Where to read bytes from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> The number of bytes to read </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>A buffer containing the bytes read, or an error </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_tPv">
<span id="_CPPv3N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_tPv"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_tPv"></span><span id="arrow::io::MemoryMappedFile::ReadAt__int64_t.int64_t.voidP"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a862f6eb20f0da6bf429c708de3d035ba"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile6ReadAtE7int64_t7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from given file position. </p>
<p>At most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> bytes are read. The number of bytes read is returned (it can be less than <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> if EOF is reached).</p>
<p>This method can be safely called from multiple threads concurrently. It is unspecified whether this method updates the file position or not.</p>
<p>The default RandomAccessFile-provided implementation uses Seek() and <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1a83be46ee28680723283ba22c11fc7c41"><span class="std std-ref">Read()</span></a>, but subclasses may override it with a more efficient implementation that doesn’t depend on implicit file positioning.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong><strong>[in]</strong> Where to read bytes from </p></li>
<li><p><strong>nbytes</strong><strong>[in]</strong> The number of bytes to read </p></li>
<li><p><strong>out</strong><strong>[out]</strong> The buffer to read bytes into </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The number of bytes read, or an error </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile9ReadAsyncERK9IOContext7int64_t7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile9ReadAsyncERK9IOContext7int64_t7int64_t"></span><span id="arrow::io::MemoryMappedFile::ReadAsync__IOContextCR.int64_t.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1adecbce8667bbe48df7c99b776186004a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="p"><span class="pre">&amp;</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile9ReadAsyncERK9IOContext7int64_t7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Read data asynchronously. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile8WillNeedERKNSt6vectorI9ReadRangeEE">
<span id="_CPPv3N5arrow2io16MemoryMappedFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile8WillNeedERKNSt6vectorI9ReadRangeEE"></span><span id="arrow::io::MemoryMappedFile::WillNeed__std::vector:ReadRange:CR"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a9e3146e36382b4d8bf4728aca28cc4cc"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WillNeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">vector</span></span><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">ReadRange</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">ranges</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile8WillNeedERKNSt6vectorI9ReadRangeEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>EXPERIMENTAL: Inform that the given ranges may be read soon. </p>
<p>Some implementations might arrange to prefetch some of the data. However, no guarantee is made and the default implementation does nothing. For robust prefetching, use <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1a511e515662f65b931ed181d6865f7629"><span class="std std-ref">ReadAt()</span></a> or <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1adecbce8667bbe48df7c99b776186004a"><span class="std std-ref">ReadAsync()</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io16MemoryMappedFile18supports_zero_copyEv">
<span id="_CPPv3NK5arrow2io16MemoryMappedFile18supports_zero_copyEv"></span><span id="_CPPv2NK5arrow2io16MemoryMappedFile18supports_zero_copyEv"></span><span id="arrow::io::MemoryMappedFile::supports_zero_copyC"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a6b0d674e00a742b563c092a3175d79eb"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">supports_zero_copy</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io16MemoryMappedFile18supports_zero_copyEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return true if <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a> is capable of zero copy <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> reads. </p>
<p>Zero copy reads imply the use of Buffer-returning <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1a83be46ee28680723283ba22c11fc7c41"><span class="std std-ref">Read()</span></a> overloads. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile5WriteEPKv7int64_t"></span><span id="arrow::io::MemoryMappedFile::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a8010d2df9fe39e6bd977f62cc9fab57b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write data at the current position in the file. Thread-safe. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile6ResizeE7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile6ResizeE7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile6ResizeE7int64_t"></span><span id="arrow::io::MemoryMappedFile::Resize__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a9858f77facb1cad90de5cf083b003b09"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Resize</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile6ResizeE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Set the size of the map to new_size. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile7WriteAtE7int64_tPKv7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile7WriteAtE7int64_tPKv7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile7WriteAtE7int64_tPKv7int64_t"></span><span id="arrow::io::MemoryMappedFile::WriteAt__int64_t.voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1afae233e4bc2f99f985a0b44f07f92f2f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WriteAt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile7WriteAtE7int64_tPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write data at a particular position in the file. Thread-safe. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile7GetSizeEv">
<span id="_CPPv3N5arrow2io16MemoryMappedFile7GetSizeEv"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile7GetSizeEv"></span><span id="arrow::io::MemoryMappedFile::GetSize"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1afa7949f86824b7f48064d172949248f2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">GetSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile7GetSizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the total file size in bytes. </p>
<p>This method does not read or move the current file position, so is safe to call concurrently with e.g. <a class="reference internal" href="#classarrow_1_1io_1_1_memory_mapped_file_1a511e515662f65b931ed181d6865f7629"><span class="std std-ref">ReadAt()</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io16MemoryMappedFile6CreateERKNSt6stringE7int64_t">
<span id="_CPPv3N5arrow2io16MemoryMappedFile6CreateERKNSt6stringE7int64_t"></span><span id="_CPPv2N5arrow2io16MemoryMappedFile6CreateERKNSt6stringE7int64_t"></span><span id="arrow::io::MemoryMappedFile::Create__ssCR.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_memory_mapped_file_1a8a8e0c3030ade61b1fd013b999796afe"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io16MemoryMappedFileE" title="arrow::io::MemoryMappedFile"><span class="n"><span class="pre">MemoryMappedFile</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Create</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">string</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">path</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io16MemoryMappedFile6CreateERKNSt6stringE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create new file with indicated size, return in read/write mode. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="buffering-input-output-wrappers">
<h3>Buffering input / output wrappers<a class="headerlink" href="#buffering-input-output-wrappers" title="Permalink to this heading">#</a></h3>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStreamE">
<span id="_CPPv3N5arrow2io19BufferedInputStreamE"></span><span id="_CPPv2N5arrow2io19BufferedInputStreamE"></span><span id="arrow::io::BufferedInputStream"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferedInputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">InputStreamConcurrencyWrapper</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io19BufferedInputStreamE" title="arrow::io::BufferedInputStream"><span class="n"><span class="pre">BufferedInputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>An <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a> that performs buffered reads from an unbuffered <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a>, which can mitigate the overhead of many small reads in some cases. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStream13SetBufferSizeE7int64_t">
<span id="_CPPv3N5arrow2io19BufferedInputStream13SetBufferSizeE7int64_t"></span><span id="_CPPv2N5arrow2io19BufferedInputStream13SetBufferSizeE7int64_t"></span><span id="arrow::io::BufferedInputStream::SetBufferSize__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a3b07e80e7c81f57cc04cc4eeb310aac4"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SetBufferSize</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_buffer_size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStream13SetBufferSizeE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize internal read buffer; calls to Read(…) will read at least. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>new_buffer_size</strong><strong>[in]</strong> the new read buffer size </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io19BufferedInputStream14bytes_bufferedEv">
<span id="_CPPv3NK5arrow2io19BufferedInputStream14bytes_bufferedEv"></span><span id="_CPPv2NK5arrow2io19BufferedInputStream14bytes_bufferedEv"></span><span id="arrow::io::BufferedInputStream::bytes_bufferedC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a7f4072b96ce0f3b1ead0e5392399ba17"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_buffered</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io19BufferedInputStream14bytes_bufferedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the number of remaining bytes in the read buffer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io19BufferedInputStream11buffer_sizeEv">
<span id="_CPPv3NK5arrow2io19BufferedInputStream11buffer_sizeEv"></span><span id="_CPPv2NK5arrow2io19BufferedInputStream11buffer_sizeEv"></span><span id="arrow::io::BufferedInputStream::buffer_sizeC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1ab5ebda44de23a2a8fd3ec0a2e6832aea"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buffer_size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io19BufferedInputStream11buffer_sizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the current size of the internal buffer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStream6DetachEv">
<span id="_CPPv3N5arrow2io19BufferedInputStream6DetachEv"></span><span id="_CPPv2N5arrow2io19BufferedInputStream6DetachEv"></span><span id="arrow::io::BufferedInputStream::Detach"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a089e65582532e9a786aab243b9b113bc"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Detach</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStream6DetachEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Release the raw <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a>. </p>
<p>Any data buffered will be discarded. Further operations on this object are invalid </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>raw the underlying <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io19BufferedInputStream3rawEv">
<span id="_CPPv3NK5arrow2io19BufferedInputStream3rawEv"></span><span id="_CPPv2NK5arrow2io19BufferedInputStream3rawEv"></span><span id="arrow::io::BufferedInputStream::rawC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1ae2d0f3caa78eed05bc39f152deb43e8d"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">raw</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io19BufferedInputStream3rawEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the unbuffered <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io19BufferedInputStream6closedEv">
<span id="_CPPv3NK5arrow2io19BufferedInputStream6closedEv"></span><span id="_CPPv2NK5arrow2io19BufferedInputStream6closedEv"></span><span id="arrow::io::BufferedInputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a5e40d419e1d91264f0535c047243c540"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io19BufferedInputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStream12ReadMetadataEv">
<span id="_CPPv3N5arrow2io19BufferedInputStream12ReadMetadataEv"></span><span id="_CPPv2N5arrow2io19BufferedInputStream12ReadMetadataEv"></span><span id="arrow::io::BufferedInputStream::ReadMetadata"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a005e02b0a50d324efc2dba69f9a5bfb9"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadata</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStream12ReadMetadataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read and return stream metadata. </p>
<p>If the stream implementation doesn’t support metadata, empty metadata is returned. Note that it is allowed to return a null pointer rather than an allocated empty metadata. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStream17ReadMetadataAsyncERK9IOContext">
<span id="_CPPv3N5arrow2io19BufferedInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="_CPPv2N5arrow2io19BufferedInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="arrow::io::BufferedInputStream::ReadMetadataAsync__IOContextCR"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1adc6af386af0a8666fe2e33bdb443f051"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadataAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">io_context</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStream17ReadMetadataAsyncERK9IOContext" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read stream metadata asynchronously. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io19BufferedInputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI11InputStreamEE7int64_t">
<span id="_CPPv3N5arrow2io19BufferedInputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI11InputStreamEE7int64_t"></span><span id="_CPPv2N5arrow2io19BufferedInputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI11InputStreamEE7int64_t"></span><span id="arrow::io::BufferedInputStream::Create__int64_t.MemoryPoolP.std::shared_ptr:InputStream:.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffered_input_stream_1a8921a8ed2fb2cea91a5943484338723c"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io19BufferedInputStreamE" title="arrow::io::BufferedInputStream"><span class="n"><span class="pre">BufferedInputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Create</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer_size</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">raw</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">raw_read_bound</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="o"><span class="pre">-</span></span><span class="m"><span class="pre">1</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io19BufferedInputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI11InputStreamEE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_input_stream"><span class="std std-ref">BufferedInputStream</span></a> from a raw <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a>. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer_size</strong><strong>[in]</strong> the size of the temporary read buffer </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to use for allocations </p></li>
<li><p><strong>raw</strong><strong>[in]</strong> a raw <a class="reference internal" href="#classarrow_1_1io_1_1_input_stream"><span class="std std-ref">InputStream</span></a></p></li>
<li><p><strong>raw_read_bound</strong><strong>[in]</strong> a bound on the maximum number of bytes to read from the raw input stream. The default -1 indicates that it is unbounded </p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_input_stream"><span class="std std-ref">BufferedInputStream</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStreamE">
<span id="_CPPv3N5arrow2io20BufferedOutputStreamE"></span><span id="_CPPv2N5arrow2io20BufferedOutputStreamE"></span><span id="arrow::io::BufferedOutputStream"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BufferedOutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream13SetBufferSizeE7int64_t">
<span id="_CPPv3N5arrow2io20BufferedOutputStream13SetBufferSizeE7int64_t"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream13SetBufferSizeE7int64_t"></span><span id="arrow::io::BufferedOutputStream::SetBufferSize__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1ae18b5e1a2cc3569b6e24fa6c3b140a3d"></span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SetBufferSize</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">new_buffer_size</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream13SetBufferSizeE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Resize internal buffer. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>new_buffer_size</strong><strong>[in]</strong> the new buffer size </p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="support.html#classarrow_1_1_status"><span class="std std-ref">Status</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20BufferedOutputStream11buffer_sizeEv">
<span id="_CPPv3NK5arrow2io20BufferedOutputStream11buffer_sizeEv"></span><span id="_CPPv2NK5arrow2io20BufferedOutputStream11buffer_sizeEv"></span><span id="arrow::io::BufferedOutputStream::buffer_sizeC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a5de98a16d40e25305b71a4716a1132b2"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buffer_size</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20BufferedOutputStream11buffer_sizeEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the current size of the internal buffer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20BufferedOutputStream14bytes_bufferedEv">
<span id="_CPPv3NK5arrow2io20BufferedOutputStream14bytes_bufferedEv"></span><span id="_CPPv2NK5arrow2io20BufferedOutputStream14bytes_bufferedEv"></span><span id="arrow::io::BufferedOutputStream::bytes_bufferedC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1acfb508c7a0b77382e4fbaa86b73f5e56"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">bytes_buffered</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20BufferedOutputStream14bytes_bufferedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the number of remaining bytes that have not been flushed to the raw <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream6DetachEv">
<span id="_CPPv3N5arrow2io20BufferedOutputStream6DetachEv"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream6DetachEv"></span><span id="arrow::io::BufferedOutputStream::Detach"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a9112ecd103ac47cc8d5513dc43d9c1ce"></span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Detach</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream6DetachEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Flush any buffered writes and release the raw <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a>. </p>
<p>Further operations on this object are invalid </p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>the underlying <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a></p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream5CloseEv">
<span id="_CPPv3N5arrow2io20BufferedOutputStream5CloseEv"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream5CloseEv"></span><span id="arrow::io::BufferedOutputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1aa0421fd0d9031a8491cb00d67e90a0b1"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the buffered output stream. </p>
<p>This implicitly closes the underlying raw output stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream5AbortEv">
<span id="_CPPv3N5arrow2io20BufferedOutputStream5AbortEv"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream5AbortEv"></span><span id="arrow::io::BufferedOutputStream::Abort"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a915a615b0f366addbec2daa6415e24b6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Abort</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream5AbortEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream abruptly. </p>
<p>This method does not guarantee that any pending data is flushed. It merely releases any underlying resource used by the stream for its operation.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_output_stream_1a915a615b0f366addbec2daa6415e24b6"><span class="std std-ref">Abort()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_output_stream_1ac07e74957c892a21d94819f069424e2d"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20BufferedOutputStream6closedEv">
<span id="_CPPv3NK5arrow2io20BufferedOutputStream6closedEv"></span><span id="_CPPv2NK5arrow2io20BufferedOutputStream6closedEv"></span><span id="arrow::io::BufferedOutputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1ac07e74957c892a21d94819f069424e2d"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20BufferedOutputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20BufferedOutputStream4TellEv">
<span id="_CPPv3NK5arrow2io20BufferedOutputStream4TellEv"></span><span id="_CPPv2NK5arrow2io20BufferedOutputStream4TellEv"></span><span id="arrow::io::BufferedOutputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1ade612281d5c3d1fbe74db0b24017c6b1"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20BufferedOutputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io20BufferedOutputStream5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream5WriteEPKv7int64_t"></span><span id="arrow::io::BufferedOutputStream::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a5668ed55058204e0235f58e036621a45"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream5WriteERKNSt10shared_ptrI6BufferEE">
<span id="_CPPv3N5arrow2io20BufferedOutputStream5WriteERKNSt10shared_ptrI6BufferEE"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream5WriteERKNSt10shared_ptrI6BufferEE"></span><span id="arrow::io::BufferedOutputStream::Write__std::shared_ptr:Buffer:CR"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1aabc285ebb13d48a41e21efbaa1a98487"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream5WriteERKNSt10shared_ptrI6BufferEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>Since the <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a> owns its memory, this method can avoid a copy if buffering is required. See <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_output_stream_1a5668ed55058204e0235f58e036621a45"><span class="std std-ref">Write(const void*, int64_t)</span></a> for details. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream5FlushEv">
<span id="_CPPv3N5arrow2io20BufferedOutputStream5FlushEv"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream5FlushEv"></span><span id="arrow::io::BufferedOutputStream::Flush"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a31c9b6cdaad2df77af04bf7214e4b7b3"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Flush</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream5FlushEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Flush buffered bytes, if any. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20BufferedOutputStream3rawEv">
<span id="_CPPv3NK5arrow2io20BufferedOutputStream3rawEv"></span><span id="_CPPv2NK5arrow2io20BufferedOutputStream3rawEv"></span><span id="arrow::io::BufferedOutputStream::rawC"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a927549cfa3852a6e8089a4053b414770"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">raw</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20BufferedOutputStream3rawEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the underlying raw output stream. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20BufferedOutputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI12OutputStreamEE">
<span id="_CPPv3N5arrow2io20BufferedOutputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI12OutputStreamEE"></span><span id="_CPPv2N5arrow2io20BufferedOutputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI12OutputStreamEE"></span><span id="arrow::io::BufferedOutputStream::Create__int64_t.MemoryPoolP.std::shared_ptr:OutputStream:"></span><span class="target" id="classarrow_1_1io_1_1_buffered_output_stream_1a3518c650f23bc2fe7ed7c1f54c2c5800"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io20BufferedOutputStreamE" title="arrow::io::BufferedOutputStream"><span class="n"><span class="pre">BufferedOutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Create</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">buffer_size</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span>, <span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">raw</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io20BufferedOutputStream6CreateE7int64_tP10MemoryPoolNSt10shared_ptrI12OutputStreamEE" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a buffered output stream wrapping the given output stream. </p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer_size</strong><strong>[in]</strong> the size of the temporary write buffer </p></li>
<li><p><strong>pool</strong><strong>[in]</strong> a <a class="reference internal" href="memory.html#classarrow_1_1_memory_pool"><span class="std std-ref">MemoryPool</span></a> to use for allocations </p></li>
<li><p><strong>raw</strong><strong>[in]</strong> another <a class="reference internal" href="#classarrow_1_1io_1_1_output_stream"><span class="std std-ref">OutputStream</span></a></p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>the created <a class="reference internal" href="#classarrow_1_1io_1_1_buffered_output_stream"><span class="std std-ref">BufferedOutputStream</span></a></p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="compressed-input-output-wrappers">
<h3>Compressed input / output wrappers<a class="headerlink" href="#compressed-input-output-wrappers" title="Permalink to this heading">#</a></h3>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21CompressedInputStreamE">
<span id="_CPPv3N5arrow2io21CompressedInputStreamE"></span><span id="_CPPv2N5arrow2io21CompressedInputStreamE"></span><span id="arrow::io::CompressedInputStream"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CompressedInputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">internal</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">InputStreamConcurrencyWrapper</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io21CompressedInputStreamE" title="arrow::io::CompressedInputStream"><span class="n"><span class="pre">CompressedInputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21CompressedInputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io21CompressedInputStream6closedEv">
<span id="_CPPv3NK5arrow2io21CompressedInputStream6closedEv"></span><span id="_CPPv2NK5arrow2io21CompressedInputStream6closedEv"></span><span id="arrow::io::CompressedInputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream_1a24019d6b106bc10545df7cac52b0b63b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io21CompressedInputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21CompressedInputStream12ReadMetadataEv">
<span id="_CPPv3N5arrow2io21CompressedInputStream12ReadMetadataEv"></span><span id="_CPPv2N5arrow2io21CompressedInputStream12ReadMetadataEv"></span><span id="arrow::io::CompressedInputStream::ReadMetadata"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream_1aa6b3330e6ba3038102093e5d4d309d31"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadata</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21CompressedInputStream12ReadMetadataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read and return stream metadata. </p>
<p>If the stream implementation doesn’t support metadata, empty metadata is returned. Note that it is allowed to return a null pointer rather than an allocated empty metadata. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21CompressedInputStream17ReadMetadataAsyncERK9IOContext">
<span id="_CPPv3N5arrow2io21CompressedInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="_CPPv2N5arrow2io21CompressedInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="arrow::io::CompressedInputStream::ReadMetadataAsync__IOContextCR"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream_1ae3c1b2d0c7ad0d83bc72fd1408be9f3f"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadataAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">io_context</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io21CompressedInputStream17ReadMetadataAsyncERK9IOContext" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read stream metadata asynchronously. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io21CompressedInputStream3rawEv">
<span id="_CPPv3NK5arrow2io21CompressedInputStream3rawEv"></span><span id="_CPPv2NK5arrow2io21CompressedInputStream3rawEv"></span><span id="arrow::io::CompressedInputStream::rawC"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream_1af2cf43c34ee53d259c3791501b508879"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">raw</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io21CompressedInputStream3rawEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the underlying raw input stream. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io21CompressedInputStream4MakeEPN4util5CodecERKNSt10shared_ptrI11InputStreamEEP10MemoryPool">
<span id="_CPPv3N5arrow2io21CompressedInputStream4MakeEPN4util5CodecERKNSt10shared_ptrI11InputStreamEEP10MemoryPool"></span><span id="_CPPv2N5arrow2io21CompressedInputStream4MakeEPN4util5CodecERKNSt10shared_ptrI11InputStreamEEP10MemoryPool"></span><span id="arrow::io::CompressedInputStream::Make__util::CodecP.std::shared_ptr:InputStream:CR.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_compressed_input_stream_1a7d49cc6d0c2f7582cf5e963e54fc4db0"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io21CompressedInputStreamE" title="arrow::io::CompressedInputStream"><span class="n"><span class="pre">CompressedInputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Make</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="utilities.html#_CPPv4N5arrow4util5CodecE" title="arrow::util::Codec"><span class="n"><span class="pre">Codec</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">codec</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">raw</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io21CompressedInputStream4MakeEPN4util5CodecERKNSt10shared_ptrI11InputStreamEEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a compressed input stream wrapping the given input stream. </p>
<p>The codec must be capable of streaming decompression. Some codecs, like Snappy, are not able to do so. </p>
</dd></dl>
</div>
</dd></dl>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStreamE">
<span id="_CPPv3N5arrow2io22CompressedOutputStreamE"></span><span id="_CPPv2N5arrow2io22CompressedOutputStreamE"></span><span id="arrow::io::CompressedOutputStream"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CompressedOutputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStream5CloseEv">
<span id="_CPPv3N5arrow2io22CompressedOutputStream5CloseEv"></span><span id="_CPPv2N5arrow2io22CompressedOutputStream5CloseEv"></span><span id="arrow::io::CompressedOutputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1afeec751d63627cc8dab11638fa0e1284"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the compressed output stream. </p>
<p>This implicitly closes the underlying raw output stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStream5AbortEv">
<span id="_CPPv3N5arrow2io22CompressedOutputStream5AbortEv"></span><span id="_CPPv2N5arrow2io22CompressedOutputStream5AbortEv"></span><span id="arrow::io::CompressedOutputStream::Abort"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1a83e7dab2af799ca87073d0e969d8a3f7"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Abort</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStream5AbortEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream abruptly. </p>
<p>This method does not guarantee that any pending data is flushed. It merely releases any underlying resource used by the stream for its operation.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_compressed_output_stream_1a83e7dab2af799ca87073d0e969d8a3f7"><span class="std std-ref">Abort()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_compressed_output_stream_1a691a34b9aae15a7b62bf1ca502b53a7b"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io22CompressedOutputStream6closedEv">
<span id="_CPPv3NK5arrow2io22CompressedOutputStream6closedEv"></span><span id="_CPPv2NK5arrow2io22CompressedOutputStream6closedEv"></span><span id="arrow::io::CompressedOutputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1a691a34b9aae15a7b62bf1ca502b53a7b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io22CompressedOutputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io22CompressedOutputStream4TellEv">
<span id="_CPPv3NK5arrow2io22CompressedOutputStream4TellEv"></span><span id="_CPPv2NK5arrow2io22CompressedOutputStream4TellEv"></span><span id="arrow::io::CompressedOutputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1ad762275940ca3386af13d9f966141851"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io22CompressedOutputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStream5WriteEPKv7int64_t">
<span id="_CPPv3N5arrow2io22CompressedOutputStream5WriteEPKv7int64_t"></span><span id="_CPPv2N5arrow2io22CompressedOutputStream5WriteEPKv7int64_t"></span><span id="arrow::io::CompressedOutputStream::Write__voidCP.int64_t"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1a48b8e0daaf2ea4280238675e023350ef"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Write</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStream5WriteEPKv7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Write the given data to the stream. </p>
<p>This method always processes the bytes in full. Depending on the semantics of the stream, the data may be written out immediately, held in a buffer, or written asynchronously. In the case where the stream buffers the data, it will be copied. To avoid potentially large copies, use the Write variant that takes an owned <a class="reference internal" href="memory.html#classarrow_1_1_buffer"><span class="std std-ref">Buffer</span></a>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStream5FlushEv">
<span id="_CPPv3N5arrow2io22CompressedOutputStream5FlushEv"></span><span id="_CPPv2N5arrow2io22CompressedOutputStream5FlushEv"></span><span id="arrow::io::CompressedOutputStream::Flush"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1af80e3bf7dc0b484060b9d0831d7a53c8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Flush</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStream5FlushEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Flush buffered bytes, if any. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io22CompressedOutputStream3rawEv">
<span id="_CPPv3NK5arrow2io22CompressedOutputStream3rawEv"></span><span id="_CPPv2NK5arrow2io22CompressedOutputStream3rawEv"></span><span id="arrow::io::CompressedOutputStream::rawC"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1ad20c12765373498eff8c7723e6ae278f"></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">raw</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io22CompressedOutputStream3rawEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the underlying raw output stream. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io22CompressedOutputStream4MakeEPN4util5CodecERKNSt10shared_ptrI12OutputStreamEEP10MemoryPool">
<span id="_CPPv3N5arrow2io22CompressedOutputStream4MakeEPN4util5CodecERKNSt10shared_ptrI12OutputStreamEEP10MemoryPool"></span><span id="_CPPv2N5arrow2io22CompressedOutputStream4MakeEPN4util5CodecERKNSt10shared_ptrI12OutputStreamEEP10MemoryPool"></span><span id="arrow::io::CompressedOutputStream::Make__util::CodecP.std::shared_ptr:OutputStream:CR.MemoryPoolP"></span><span class="target" id="classarrow_1_1io_1_1_compressed_output_stream_1adc0dd58be8cb0311219b4878a1ee0875"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io22CompressedOutputStreamE" title="arrow::io::CompressedOutputStream"><span class="n"><span class="pre">CompressedOutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Make</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">util</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="utilities.html#_CPPv4N5arrow4util5CodecE" title="arrow::util::Codec"><span class="n"><span class="pre">Codec</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">codec</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="#_CPPv4N5arrow2io12OutputStreamE" title="arrow::io::OutputStream"><span class="n"><span class="pre">OutputStream</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">raw</span></span>, <a class="reference internal" href="memory.html#_CPPv4N5arrow10MemoryPoolE" title="arrow::MemoryPool"><span class="n"><span class="pre">MemoryPool</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">pool</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="memory.html#_CPPv4N5arrow19default_memory_poolEv" title="arrow::default_memory_pool"><span class="n"><span class="pre">default_memory_pool</span></span></a><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5arrow2io22CompressedOutputStream4MakeEPN4util5CodecERKNSt10shared_ptrI12OutputStreamEEP10MemoryPool" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Create a compressed output stream wrapping the given output stream. </p>
<p>The codec must be capable of streaming compression. Some codecs, like Snappy, are not able to do so. </p>
</dd></dl>
</div>
</dd></dl>
</section>
<section id="transforming-input-wrapper">
<h3>Transforming input wrapper<a class="headerlink" href="#transforming-input-wrapper" title="Permalink to this heading">#</a></h3>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStreamE">
<span id="_CPPv3N5arrow2io20TransformInputStreamE"></span><span id="_CPPv2N5arrow2io20TransformInputStreamE"></span><span id="arrow::io::TransformInputStream"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TransformInputStream</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><span class="n"><span class="pre">arrow</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">io</span></span><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N5arrow2io11InputStreamE" title="arrow::io::InputStream"><span class="n"><span class="pre">InputStream</span></span></a><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStreamE" title="Permalink to this definition">#</a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream5CloseEv">
<span id="_CPPv3N5arrow2io20TransformInputStream5CloseEv"></span><span id="_CPPv2N5arrow2io20TransformInputStream5CloseEv"></span><span id="arrow::io::TransformInputStream::Close"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1a5576ec342350a864af4df5da9a42e68b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Close</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream5CloseEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream cleanly. </p>
<p>For writable streams, this will attempt to flush any pending data before releasing the underlying resource.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_transform_input_stream_1a5576ec342350a864af4df5da9a42e68b"><span class="std std-ref">Close()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_transform_input_stream_1a0beb9fed7d93f38bafd18cabcf30d573"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream5AbortEv">
<span id="_CPPv3N5arrow2io20TransformInputStream5AbortEv"></span><span id="_CPPv2N5arrow2io20TransformInputStream5AbortEv"></span><span id="arrow::io::TransformInputStream::Abort"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1a79d03a8c503ab4173157f8d3b6711090"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4N5arrow6StatusE" title="arrow::Status"><span class="n"><span class="pre">Status</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Abort</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream5AbortEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Close the stream abruptly. </p>
<p>This method does not guarantee that any pending data is flushed. It merely releases any underlying resource used by the stream for its operation.</p>
<p>After <a class="reference internal" href="#classarrow_1_1io_1_1_transform_input_stream_1a79d03a8c503ab4173157f8d3b6711090"><span class="std std-ref">Abort()</span></a> is called, <a class="reference internal" href="#classarrow_1_1io_1_1_transform_input_stream_1a0beb9fed7d93f38bafd18cabcf30d573"><span class="std std-ref">closed()</span></a> returns true and the stream is not available for further operations. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20TransformInputStream6closedEv">
<span id="_CPPv3NK5arrow2io20TransformInputStream6closedEv"></span><span id="_CPPv2NK5arrow2io20TransformInputStream6closedEv"></span><span id="arrow::io::TransformInputStream::closedC"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1a0beb9fed7d93f38bafd18cabcf30d573"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">closed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20TransformInputStream6closedEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return whether the stream is closed. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream4ReadE7int64_tPv">
<span id="_CPPv3N5arrow2io20TransformInputStream4ReadE7int64_tPv"></span><span id="_CPPv2N5arrow2io20TransformInputStream4ReadE7int64_tPv"></span><span id="arrow::io::TransformInputStream::Read__int64_t.voidP"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1a4703b0cfd481039e595a3019983cf77a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span>, <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">out</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream4ReadE7int64_tPv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position into <code class="docutils literal notranslate"><span class="pre">out</span></code>. The number of bytes read is returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream4ReadE7int64_t">
<span id="_CPPv3N5arrow2io20TransformInputStream4ReadE7int64_t"></span><span id="_CPPv2N5arrow2io20TransformInputStream4ReadE7int64_t"></span><span id="arrow::io::TransformInputStream::Read__int64_t"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1adfc1c9814e641fe5c866aecf029aecb6"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><a class="reference internal" href="memory.html#_CPPv4N5arrow6BufferE" title="arrow::Buffer"><span class="n"><span class="pre">Buffer</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Read</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">nbytes</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream4ReadE7int64_t" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read data from current file position. </p>
<p>Read at most <code class="docutils literal notranslate"><span class="pre">nbytes</span></code> from the current file position. Less bytes may be read if EOF is reached. This method updates the current file position.</p>
<p>In some cases (e.g. a memory-mapped file), this method may avoid a memory copy. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream12ReadMetadataEv">
<span id="_CPPv3N5arrow2io20TransformInputStream12ReadMetadataEv"></span><span id="_CPPv2N5arrow2io20TransformInputStream12ReadMetadataEv"></span><span id="arrow::io::TransformInputStream::ReadMetadata"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1acbd3124408088228105857ded8953442"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadata</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream12ReadMetadataEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read and return stream metadata. </p>
<p>If the stream implementation doesn’t support metadata, empty metadata is returned. Note that it is allowed to return a null pointer rather than an allocated empty metadata. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5arrow2io20TransformInputStream17ReadMetadataAsyncERK9IOContext">
<span id="_CPPv3N5arrow2io20TransformInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="_CPPv2N5arrow2io20TransformInputStream17ReadMetadataAsyncERK9IOContext"></span><span id="arrow::io::TransformInputStream::ReadMetadataAsync__IOContextCR"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1ae464917acd05adf7007fd1f0001a6291"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="async.html#_CPPv4I0EN5arrow6FutureE" title="arrow::Future"><span class="n"><span class="pre">Future</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">shared_ptr</span></span><span class="p"><span class="pre">&lt;</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="datatype.html#_CPPv4N5arrow16KeyValueMetadataE" title="arrow::KeyValueMetadata"><span class="n"><span class="pre">KeyValueMetadata</span></span></a><span class="p"><span class="pre">&gt;</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReadMetadataAsync</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IOContext</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">io_context</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5arrow2io20TransformInputStream17ReadMetadataAsyncERK9IOContext" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Read stream metadata asynchronously. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5arrow2io20TransformInputStream4TellEv">
<span id="_CPPv3NK5arrow2io20TransformInputStream4TellEv"></span><span id="_CPPv2NK5arrow2io20TransformInputStream4TellEv"></span><span id="arrow::io::TransformInputStream::TellC"></span><span class="target" id="classarrow_1_1io_1_1_transform_input_stream_1ab22ff90963c0bfad52e5e3b8620a4ad4"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><a class="reference internal" href="support.html#_CPPv4I0EN5arrow6ResultE" title="arrow::Result"><span class="n"><span class="pre">Result</span></span></a><span class="p"><span class="pre">&lt;</span></span><span class="n"><span class="pre">int64_t</span></span><span class="p"><span class="pre">&gt;</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Tell</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4NK5arrow2io20TransformInputStream4TellEv" title="Permalink to this definition">#</a><br /></dt>
<dd><p>Return the position in this stream. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="async.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Asynchronous programming</p>
</div>
</a>
<a class="right-next"
href="ipc.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Arrow IPC</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#interfaces">Interfaces</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#concrete-implementations">Concrete implementations</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#in-memory-streams">In-memory streams</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#local-files">Local files</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#buffering-input-output-wrappers">Buffering input / output wrappers</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#compressed-input-output-wrappers">Compressed input / output wrappers</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#transforming-input-wrapper">Transforming input wrapper</a></li>
</ul>
</li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/cpp/api/io.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>