// 获取文件name最后修改的时间
public long fileModified(String name) {
File file = new File(directory, name);
return file.lastModified();
}
// 返回目录文件directory下名称为name的文件最后修改的时间
public static long fileModified(File directory, String name) {
File file = new File(directory, name);
return file.lastModified();
}
// 设置文件name当前修改的时间
public void touchFile(String name) {
File file = new File(directory, name);
file.setLastModified(System.currentTimeMillis());
}
// 获取文件name的长度
public long fileLength(String name) {
File file = new File(directory, name);
return file.length();
}
// 删除目录文件directory下的name文件
public void deleteFile(String name) throws IOException {
File file = new File(directory, name);
if (!file.delete())
throw new IOException("Cannot delete " + file);
}
// 重新命名文件,该方法已经废弃
public synchronized void renameFile(String from, String to)
throws IOException {
File old = new File(directory, from);
File nu = new File(directory, to);
if (nu.exists())
if (!nu.delete())
throw new IOException("Cannot delete " + nu);
if (!old.renameTo(nu)) {
java.io.InputStream in = null;
java.io.OutputStream out = null;
try {
in = new FileInputStream(old);
out = new FileOutputStream(nu);
if (buffer == null) {
buffer = new byte[1024];
}
int len;
while ((len = in.read(buffer)) >= 0) {
out.write(buffer, 0, len);
}
old.delete();
}
catch (IOException ioe) {
IOException newExc = new IOException("Cannot rename " + old + " to " + nu);
newExc.initCause(ioe);
throw newExc;
}
finally {
try {
if (in != null) {
try {
in.close();
} catch (IOException e) {
throw new RuntimeException("Cannot close input stream: " + e.toString(), e);
}
}
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
throw new RuntimeException("Cannot close output stream: " + e.toString(), e);
}
}
}
}
}
}
// 创建一个名称为name的文件,返回一个输出流,以便对该文件进行写入操作
public IndexOutput createOutput(String name) throws IOException {
File file = new File(directory, name);
if (file.exists() && !file.delete()) // 如果name指定文件存在,或者没有被删除掉,抛出异常
throw new IOException("Cannot overwrite: " + file);
return new FSIndexOutput(file); // 返回文件File file的一个输出流
}