--- /dev/null
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Search_Lucene
+ * @subpackage Storage
+ * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id: Directory.php 16541 2009-07-07 06:59:03Z bkarwin $
+ */
+
+
+/**
+ * @category Zend
+ * @package Zend_Search_Lucene
+ * @subpackage Storage
+ * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+abstract class Zend_Search_Lucene_Storage_Directory
+{
+
+ /**
+ * Closes the store.
+ *
+ * @return void
+ */
+ abstract public function close();
+
+ /**
+ * Returns an array of strings, one for each file in the directory.
+ *
+ * @return array
+ */
+ abstract public function fileList();
+
+ /**
+ * Creates a new, empty file in the directory with the given $filename.
+ *
+ * @param string $filename
+ * @return Zend_Search_Lucene_Storage_File
+ */
+ abstract public function createFile($filename);
+
+
+ /**
+ * Removes an existing $filename in the directory.
+ *
+ * @param string $filename
+ * @return void
+ */
+ abstract public function deleteFile($filename);
+
+ /**
+ * Purge file if it's cached by directory object
+ *
+ * Method is used to prevent 'too many open files' error
+ *
+ * @param string $filename
+ * @return void
+ */
+ abstract public function purgeFile($filename);
+
+ /**
+ * Returns true if a file with the given $filename exists.
+ *
+ * @param string $filename
+ * @return boolean
+ */
+ abstract public function fileExists($filename);
+
+
+ /**
+ * Returns the length of a $filename in the directory.
+ *
+ * @param string $filename
+ * @return integer
+ */
+ abstract public function fileLength($filename);
+
+
+ /**
+ * Returns the UNIX timestamp $filename was last modified.
+ *
+ * @param string $filename
+ * @return integer
+ */
+ abstract public function fileModified($filename);
+
+
+ /**
+ * Renames an existing file in the directory.
+ *
+ * @param string $from
+ * @param string $to
+ * @return void
+ */
+ abstract public function renameFile($from, $to);
+
+
+ /**
+ * Sets the modified time of $filename to now.
+ *
+ * @param string $filename
+ * @return void
+ */
+ abstract public function touchFile($filename);
+
+
+ /**
+ * Returns a Zend_Search_Lucene_Storage_File object for a given $filename in the directory.
+ *
+ * If $shareHandler option is true, then file handler can be shared between File Object
+ * requests. It speed-ups performance, but makes problems with file position.
+ * Shared handler are good for short atomic requests.
+ * Non-shared handlers are useful for stream file reading (especial for compound files).
+ *
+ * @param string $filename
+ * @param boolean $shareHandler
+ * @return Zend_Search_Lucene_Storage_File
+ */
+ abstract public function getFileObject($filename, $shareHandler = true);
+
+}
+