【问题标题】:Android-Java detect when the Output-Stream has finished to write the bytes [closed]Android-Java检测输出流何时完成写入字节[关闭]
【发布时间】:2021-01-05 17:15:33
【问题描述】:

我的代码工作正常,我只想在写入字节完成后显示一些吐司。我知道当我在 while 循环in.read(buf) == 0 之后完成读取文件时可以添加 toast,因此 while 循环完成。我可以在一段时间后或在关闭您的信息流之后显示吐司。当我在 while 循环结束时添加 toast 时,文件显示的时间与显示的 toast 时间不同。它会在几分钟后显示出来。我怎么知道写入字节已完成或close() 告诉它已完成?

File newfile;
FileInputStream in = new FileInputStream(new File(path));
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File dir = new File(root + "/" + "Pictures");
if (!dir.exists()) {
    dir.mkdirs();
}
newfile = new File(dir, "status_" + System.currentTimeMillis() + ".mp4");
if (newfile.exists()) newfile.delete();
OutputStream out = new FileOutputStream(newfile);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
    out.write(buf, 0, len);
}
in.close();
out.close();

【问题讨论】:

  • 在 close() 之后放一个 Toast。有什么问题?
  • @blackapps 我不喜欢,所以这是一个好方法。
  • @blackapps 你是否对这个问题投了反对票,如果你有任何不清楚的地方,你可以问。
  • 在while循环之后是一个好地方
  • @ChristianB 我明白了你的意思,但文件显示的时间与显示吐司的时间不同。几分钟后它就显露出来了。

标签: java android file file-handling


【解决方案1】:

他们没有办法追踪到OutputStream已经写完字节,你可以在close()后面加toast什么的。

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 2015-06-18
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2012-11-01
    相关资源
    最近更新 更多