/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) {}
}