Многие другие ответы приведут к ошибкам / предупреждениям. Этот подход является относительно безумным, хотя вам все еще может понадобиться git branch -D branch_to_delete
, если он не полностью слит с some_other_branch
, например.
git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete
Удаленная обрезка не нужна, если вы удалили удаленную ветвь. Он используется только для получения самых современных пультов, доступных на репо, которое вы отслеживаете. Я заметил, что git fetch
добавит пульты, а не удалит их. Вот пример того, когда git remote prune origin
действительно что-то предпримет:
Пользователь A выполняет описанные выше шаги. Пользователь B будет запускать следующие команды, чтобы увидеть самые современные удаленные ветви
git fetch
git remote prune origin
git branch -r
Сделайте это для скрытых файлов:
File root = new File(yourDirectory);
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return !file.isHidden();
}
});
Это не приведет к возврату скрытых файлов.
Что касается системных файлов, я считаю, что это концепция Windows и, следовательно, может не поддерживаться интерфейсом File
, который пытается быть независимым от системы. Однако вы можете использовать команды командной строки, если они существуют.
Или используйте то, что @Reimeus имел в своем ответе.
Возможно, как
File root = new File("C:\\");
File[] files = root.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
Path path = Paths.get(file.getAbsolutePath());
DosFileAttributes dfa;
try {
dfa = Files.readAttributes(path, DosFileAttributes.class);
} catch (IOException e) {
// bad practice
return false;
}
return (!dfa.isHidden() && !dfa.isSystem());
}
});
Если вы пытаетесь перечислить все файлы в C:/
, имейте в виду, что есть и другие файлы, которые не являются ни скрытыми, ни системными файлами, но они все равно не будут открываться, потому что им требуются специальные привилегии / разрешения. Итак:
String[] files = file.list();
if (files!=null) {
for (String f : files) open(f);
}
Так что просто сравните, если массив имеет нулевое значение или нет, и спроектируйте свою рекурсию таким образом, чтобы она просто пропускала те файлы, массив которых для функции list()
равен нулю.
private void nodes(DefaultMutableTreeNode top, File f) throws IOException {
if (f.isDirectory()) {
File[] listFiles = f.listFiles();
if (listFiles != null) {
DefaultMutableTreeNode b1[] = new DefaultMutableTreeNode[listFiles.length];
for (int i = 0; i < b1.length; i++) {
b1[i] = new DefaultMutableTreeNode(listFiles[i].toString());
top.add(b1[i]);
File g = new File(b1[i].toString());
nodes(b1[i], g);
}
}
}
Вот код, который я использовал для создания проводника оконных файлов с помощью jtree.
При запуске под Windows, Java 7 представил DosFileAttributes , который позволяет фильтровать системные и скрытые файлы. Это можно использовать в сочетании с FileFilter
Path srcFile = Paths.get("myDirectory");
DosFileAttributes dfa = Files.readAttributes(srcFile, DosFileAttributes.class);
System.out.println("System File? " + dfa.isSystem());
System.out.println("Hidden File? " + dfa.isHidden());