private static void printHeader(Sigar sigar, FileInfo info) throws SigarException { String file = info.getName(); FileInfo link = sigar.getLinkInfo(file); if (link.getType() == FileInfo.TYPE_LNK) { try { System.out.println(file + " -> " + System.out.println(link.getTypeChar() + info.getPermissionsString() + "\t" + info.getUid() + "\t" + info.getGid() + "\t" + info.getSize() + "\t" + new Date(info.getMtime()) + "\t" + file); if (info.getType() == FileInfo.TYPE_DIR) { info.enableDirStat(true);
public void output(String[] args) throws SigarException { String file = args[0]; FileInfo link = this.sigar.getLinkInfo(file); FileInfo info = this.sigar.getFileInfo(file); if (link.getType() == FileInfo.TYPE_LNK) { try { file = file + " -> " + new File(file).getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } } println(link.getTypeChar() + info.getPermissionsString() + "\t" + info.getUid() + "\t" + info.getGid() + "\t" + info.getSize() + "\t" + getDate(info.getMtime()) + "\t" + file); }
private static void add(Sigar sigar, FileWatcher watcher, String file, boolean recurse) throws SigarException { FileInfo info = watcher.add(file); printHeader(sigar, info); if (!recurse) { return; } if (info.getType() == FileInfo.TYPE_DIR) { File[] dirs = new File(info.getName()).listFiles(new FileFilter() { public boolean accept(File file) { return file.isDirectory() && file.canRead(); } }); for (int i=0; i<dirs.length; i++) { add(sigar, watcher, dirs[i].getAbsolutePath(), recurse); } } }
private long getOffset(FileInfo fileInfo) { FileInfo previousFileInfo = fileInfo.getPreviousInfo(); LOG.debug(this.logFile + ": first stat"); return fileInfo.getSize(); if (fileInfo.getInode() != previousFileInfo.getInode()) { if (LOG.isDebugEnabled()) { LOG.debug(this.logFile + ": file inode changed"); if (fileInfo.getSize() < previousFileInfo.getSize()) { if (LOG.isDebugEnabled()) { LOG.debug(this.logFile + ": file truncated"); long diff = fileInfo.getSize() - previousFileInfo.getSize(); LOG.debug(this.logFile + ": " + diff + " new bytes"); return previousFileInfo.getSize();
public String diff(FileInfo info) { return this.fileInfo.diff(info); }
public void enableDirStat(boolean value) { this.fileInfo.enableDirStat(value); }
public long getGid() { return this.fileInfo.getGid(); }
public long getSize() { return this.fileInfo.getSize(); }
public char getTypeChar() { return this.fileInfo.getTypeChar(); }
public long getUid() { return this.fileInfo.getUid(); }
public int getType() { return this.fileInfo.getType(); }
public long getMtime() { return this.fileInfo.getMtime(); }
public String getPermissionsString() { return this.fileInfo.getPermissionsString(); }
public void onException(FileInfo info, SigarException e) { System.out.println("Error checking " + info.getName() + ":"); e.printStackTrace(); } };
public String diff() { return this.fileInfo.diff(); }
public void tail(FileInfo info, Reader reader) { String line; BufferedReader buffer = new BufferedReader(reader); if (getFiles().size() > 1) { System.out.println("==> " + info.getName() + " <=="); } try { while ((line = buffer.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.out.println(e); } } };
public String diff(DirStat stat) { return this.fileInfo.diff(stat); }