Most visited

Recently visited

Added in API level 17

AtomicFile

public class AtomicFile
extends Object

java.lang.Object
   ↳ android.util.AtomicFile


Helper类,用于通过创建备份文件对文件执行原子操作,直到写入成功完成。 如果您在旧版本的平台上需要此功能,则可以在v4支持库中使用AtomicFile

原子文件通过确保文件在删除备份之前完全写入并同步到磁盘来保证文件的完整性。 只要备份文件存在,原始文件就被认为是无效的(从先前的写入文件的尝试遗留下来)。

原子文件不赋予任何文件锁定语义。 当文件可能被多个线程或进程同时访问或修改时,请勿使用此类。 调用者负责在访问文件时确保适当的互斥不变量。

Summary

Public constructors

AtomicFile(File baseName)

为位于给定文件路径的文件创建一个新的AtomicFile。

Public methods

void delete()

删除原子文件。

void failWrite(FileOutputStream str)

在写入由 startWrite()返回的流时出于某种原因失败时 startWrite()

void finishWrite(FileOutputStream str)

当您成功完成写入由 startWrite()返回的 startWrite()流时 startWrite()

File getBaseFile()

将路径返回到基本文件。

FileInputStream openRead()

打开原子文件进行阅读。

byte[] readFully()

openRead()一个方便,它也将所有文件内容读入返回的字节数组中。

FileOutputStream startWrite()

在文件上开始新的写入操作。

Inherited methods

From class java.lang.Object

Public constructors

AtomicFile

Added in API level 17
AtomicFile (File baseName)

为位于给定文件路径的文件创建一个新的AtomicFile。 辅助备份文件将与附加“.bak”的文件路径相同。

Parameters
baseName File

Public methods

delete

Added in API level 17
void delete ()

删除原子文件。 这会删除基本文件和备份文件。

failWrite

Added in API level 17
void failWrite (FileOutputStream str)

在写入由startWrite()返回的startWrite()流时出于某种原因失败时startWrite() 这将关闭当前写入流,并回滚到文件的以前状态。

Parameters
str FileOutputStream

finishWrite

Added in API level 17
void finishWrite (FileOutputStream str)

在您成功完成写入由startWrite()返回的startWrite()流后进行startWrite() 这将关闭,同步并提交新数据。 下一次尝试读取原子文件将返回新的文件流。

Parameters
str FileOutputStream

getBaseFile

Added in API level 17
File getBaseFile ()

将路径返回到基本文件。 您通常不应该使用它,因为该路径上的数据可能无效。

Returns
File

openRead

Added in API level 17
FileInputStream openRead ()

打开原子文件进行阅读。 如果之前有不完整的写入,这将在打开阅读之前回滚到最后的良好数据。 读完文件后,您应该在FileInputStream上调用close()。

请注意,如果另一个线程当前正在执行写入操作,则会错误地认为它处于错误写入和回滚状态,导致当前正在写入的新数据被丢弃。 您必须为访问AtomicFile执行自己的线程保护。

Returns
FileInputStream
Throws
FileNotFoundException

readFully

Added in API level 17
byte[] readFully ()

openRead()一个方便,它也将所有文件内容读入返回的字节数组中。

Returns
byte[]
Throws
IOException

startWrite

Added in API level 17
FileOutputStream startWrite ()

在文件上开始新的写入操作。 这将返回一个FileOutputStream,您可以将其写入新的文件数据。 现有的文件被替换为新的数据。 不能直接关闭给定的FileOutputStream; 请拨打finishWrite(FileOutputStream)failWrite(FileOutputStream)

请注意,如果另一个线程当前正在执行写入操作,则此操作将简单地将该线程正在写入的内容替换为正在由该线程写入的新文件,而当另一个线程完成写入时,新的写入操作将不再安全丢失)。 您必须为访问AtomicFile执行自己的线程保护。

Returns
FileOutputStream
Throws
IOException

Hooray!