Package org.apache.lucene.util

# Class FileDeleter

java.lang.Object
org.apache.lucene.util.FileDeleter

public final class FileDeleter extends Object
This class provides ability to track the reference counts of a set of index files and delete them when their counts decreased to 0.

This class is NOT thread-safe, the user should make sure the thread-safety themselves

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`FileDeleter.MsgType`
Types of messages this file deleter will broadcast REF: messages about reference FILE: messages about file
`static final class`
`FileDeleter.RefCount`
Tracks the reference count for a single index file:

## Constructor Summary

Constructors
Constructor
Description
`FileDeleter(Directory directory, BiConsumer<FileDeleter.MsgType,String> messenger)`
Create a new FileDeleter with a messenger consumes various verbose messages

## Method Summary

Modifier and Type
Method
Description
`void`
`decRef(Collection<String> fileNames)`
Decrease ref counts for all provided files, delete them if ref counts down to 0, even on exception.
`void`
`deleteFileIfNoRef(String fileName)`
`void`
`deleteFilesIfNoRef(Collection<String> files)`
delete only files that are unref'ed
`boolean`
`exists(String fileName)`
return true only if file is touched and also has larger than 0 ref count
`void`
`forceDelete(String fileName)`
`Set<String>`
`getAllFiles()`
get all files, some of them may have ref count 0
`int`
`getRefCount(String fileName)`
get ref count for a provided file, if the file is not yet recorded, this method will return 0
`Set<String>`
`getUnrefedFiles()`
get files that are touched but not incref'ed
`void`
`incRef(String fileName)`
`void`
`incRef(Collection<String> fileNames)`
`void`
`initRefCount(String fileName)`
if the file is not yet recorded, this method will create a new RefCount object with count 0

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### FileDeleter

public FileDeleter(Directory directory, BiConsumer<FileDeleter.MsgType,String> messenger)
Create a new FileDeleter with a messenger consumes various verbose messages

Parameters:
  `directory` - the index directory
  `messenger` - two arguments will be passed in, `FileDeleter.MsgType` and the actual message in String. Can be null if the user do not want debug infos

## Method Details

### incRef

public void incRef(Collection<String> fileNames)

### incRef

public void incRef(String fileName)

### decRef

public void decRef(Collection<String> fileNames) throws IOException
Decrease ref counts for all provided files, delete them if ref counts down to 0, even on exception. Throw first exception hit, if any

Throws:
  `IOException`

### initRefCount

public void initRefCount(String fileName)
if the file is not yet recorded, this method will create a new RefCount object with count 0

### getRefCount

public int getRefCount(String fileName)
get ref count for a provided file, if the file is not yet recorded, this method will return 0

### getAllFiles

public Set<String> getAllFiles()
get all files, some of them may have ref count 0

### exists

public boolean exists(String fileName)
return true only if file is touched and also has larger than 0 ref count

### getUnrefedFiles

public Set<String> getUnrefedFiles()
get files that are touched but not incref'ed

### deleteFilesIfNoRef

public void deleteFilesIfNoRef(Collection<String> files) throws IOException
delete only files that are unref'ed

Throws:
  `IOException`

### forceDelete

public void forceDelete(String fileName) throws IOException

Throws:
  `IOException`

### deleteFileIfNoRef

public void deleteFileIfNoRef(String fileName) throws IOException

Throws:
  `IOException`