/proc/%d/stat
我在使用我的 Java 方法 copyFiles()读取文件时遇到问题(源代码如下)。我找到了使用类似 readProc() 方法的解决方法。
现在我想知道是什么问题。创建了输出文件,但每个文件都有 0 字节(在 /proc/ 中所有文件都是 0 字节,因为它不是标准文件系统)。FileUtils 来自 Apache Commons IO 库。
我尝试使用 java.nio 来做同样的事情——再次抛出 IOException ,表明每个文件的属性都是错误的。
我删除了有关解析异常等的部分代码。
为什么这适用于 FileInputStream,但不适用于FileUtils.copyFile()
?
public void copyFiles() {
final File dir = new File("/proc");
final String[] filedirArray = dir.list();
long counter = 0;
for(String filedir : filedirArray) {
final File checkFile = new File(dir, filedir);
if (checkFile.isDirectory()) {
try {
Integer.parseInt(filedir);
File srcFile = new File(checkFile, "stat");
File dstFile = new File("/home/waldekm/files/stat" + "." + Long.toString(counter++));
try {
FileUtils.copyFile(srcFile, dstFile);
} catch (IOException e1) {}
} catch (NumberFormatException e) {
// not a number, do nothing
}
}
}
}
public static void readProc(final String src, final String dst) {
FileInputStream in = null;
FileOutputStream out = null;
File srcFile = new File(src);
File dstFile = new File(dst);
try {
in = new FileInputStream(srcFile);
out = new FileOutputStream(dstFile);
int c;
while((c = in.read()) != -1) {
out.write(c);
}
} catch (IOException e1) {
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e1) {}
try {
if (out != null) {
out.close();
}
} catch (IOException e1) {}
}