protected Object readAttribute(FileObject fo, String attrName) { if( "removeWritables".equals( attrName ) ) { return new WritablesRemover( fo ); } return super.readAttribute(fo, attrName); } private class WritablesRemover implements Callable { private FileObject fo; public WritablesRemover( FileObject fo ) { this.fo = fo; } public Object call() throws Exception { FileSystem[] fss = getDelegates(); String path = fo.getPath(); for (int i = 0; i < fss.length; i++) { if ((fss[i] == null) || fss[i].isReadOnly()) { continue; } FileObject copy = fss[i].findResource( path ); if( null != copy ) copy.delete(); } return fo; } }