2013-11-14 2 views

ответ

1

Как отметил jtanhlborn, canWrite() - это не то, что вы ищете. Быстрый способ проверить, заблокирован ли File, пытается изменить имя файла с помощью renameTo и посмотреть, успешны ли вы. Например:

File file = new File("testFile.png"); 
boolean fileLocked = !file.renameTo(file); 

В случае, преуспевает файл переименовать, renameTo будет возвращен true и заперли будет false. Конечно, имя файла не будет изменено, так как вы «переименовали» его в свое первоначальное имя.

+0

Вы имеете в виду фактическое изменение имени файла или просто тестирование, если заблокирован возвращается true или false? Я не хочу менять имя. –

+0

@ Dev-Ria Добавил кое-что, чтобы уточнить. Конечный результат не меняет имя вообще, несмотря на выполнение операции переименования. – sushain97

+0

ok so '! File.renameTo (file)' означает, что он не мог переименовать файл. поэтому filelocked = false означает, что он заблокирован? –

3

canWrite() - это тест разрешений (т. Е. Статическая проверка на основе метаданных файла). он не имеет ничего общего с содержимым файла или любыми файловыми замками.

+0

добавил ссылку на javadoc;) –

+0

Я видел, как он использовался для проверки того, используется ли файл другим процессом перед удалением. Это лучший способ проверить, используется ли файл другим процессом? –

+0

@ Dev-Ria - как я уже указывал, нет, это бессмысленно. – jtahlborn

Смежные вопросы