質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

2回答

1010閲覧

プログラミング言語学習時のflushの意味

moriman

総合スコア615

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2020/06/02 01:42

https://api.flutter.dev/flutter/dart-io/File/writeAsString.html

writeAsString method

Future<File> writeAsString (
String contents,
{FileMode mode: FileMode.write,
Encoding encoding: utf8,
bool flush: false}
)
Write a string to a file.

Opens the file, writes the string in the given encoding, and closes the file. Returns a Future<File> that completes with this File object once the entire operation has completed.

By default writeAsString creates the file for writing and truncates the file if it already exists. In order to append the bytes to an existing file, pass FileMode.append as the optional mode parameter.

If the argument flush is set to true, the data written will be flushed to the file system before the returned future completes.

上記ページを見ていて気になったんですが、最後の文章のflushはどういう意味なんでしょうか。
結局引数flushをtrueにセットしたら具体的にどうなるのかよくわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moriman

2020/06/02 03:23

回答を頂きましてありがとうございます。 話の前提となる情報がよくわからないので調べたんですが http://echoes.hak.hokkyodai.ac.jp/db/496/node15_mn.html 上記ページに書いてあることを基に考えて間違いないでしょうか。 お示し頂いたページで「ディスク」という言葉が使われているのですが、これは ハードディスク(補助記憶装置)のことでしょうか。 メモリ(主記憶装置)⇔バッファ ハードディスク(補助記憶装置)⇔ファイル writeAsString(あるいは他言語のファイル書き込み関数)が実行されると、バッファに書き込まれる。 バッファに書き込まれた内容が即座にファイルに書き込まれるとは限らない。 flush関数を実行する、あるいはflush引数をtrueにするとバッファからファイルへの書き込み が保証される。 上記のドキュメントでは 「flush引数をtrueにすると、Futureが完了するよりも前にバッファに書き込まれた内容がファイルシステムに書き出される(flushされる)」みたいなことを言っている、 という理解で問題ないでしょうか。
hoshi-takanori

2020/06/02 12:05

はい。ディスクはハードディスクや SSD などの補助記憶装置を指します。これらの読み書きはメモリーより遅いのと、読み書きの単位がブロックと言って、512 バイト〜数キロバイトの塊になるため、たとえ数バイトの読み書きでも、ブロック全体の読み込みが発生します。書き込みの場合は、まずブロック全体を読み込んで、変更がある部分を変更した上でブロック全体をまとめて書きこむことになります。 バファリングはこのような無駄を防ぐために行われるものですが、重要なログなど、どうしてもその場で書き込みを完了させたい場合にはフラッシュ操作を行うことになります。
moriman

2020/06/08 02:18

丁寧に解説していただきましてありがとうございました。
guest

回答2

0

辞書を引きました?
辞書には「頬を赤らめる」以外に
「出水」とか「勢い良く流す」という意味が載っていて、こちらの方の意味です。
コンピュータ用語では
「貯めてたやつを吐き出す」
という意味で使います。

ここでは(多分)引数 flush を true でこの関数を読んだら、関数の出口
(つまり、ユーザーが書いたプログラムへ戻る直前)で貯めていたデータを
ファイルシステムへ引き渡す、ということでしょう。
実際にこのタイミングでディスクに書き出されるかどうかは私には分かりません。

flush が false なら、もっと後で、システムが適当な時を見計らって書き出すのでしょう。

投稿2020/06/02 02:35

nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ファイル出力時に,本当にいきなりファイルに書くのではなくて,
データ → バッファ → ファイル
という感じでまずはバッファに溜めこむ系の話……に関して,

"file flush buffer" とかで検索してみると良いかもしれません.

投稿2020/06/02 01:51

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問