Java сохраняет, соединяют файлы без видимой причины

Скорее что-то вроде

$('#tatt').find('td:nth-child(3), th:nth-child(3)').hide();

или

$('#tatt td:nth-child(3), #tatt th:nth-child(3)').hide();

(Кстати, если вы используете jQuery для манипулирования DOM, на самом деле нет необходимости вызывать метод findElementById, тоже. Просто придерживайтесь $(/*selector*/).

11
задан Jonas Klemming 26 February 2009 в 20:03
поделиться

7 ответов

Код Вы отправили хорошие взгляды - это не должно вызывать проблемы, которые Вы описываете. Я понимаю, что Вы отправили просто часть кода, который Вы имеете - можно ли попытаться извлечь просто эту часть к отдельной программе, выполнить ли ее и видеть ли, происходит ли проблема все еще? Мое предположение - то, что существует некоторое другое место в коде, который делает new FileInputStream(path); и не закрывает поток правильно. Вы могли бы просто видеть результаты здесь, когда Вы пытаетесь удалить файл.

6
ответ дан 3 December 2019 в 10:26
поделиться

Удостоверьтесь, что у Вас есть свои опасные положения в наконец блок не в блоке попытки. Если нет никакой попытки/наконец, потому что метод выдает исключение, затем добавляют попытку/наконец и помещают завершение там.

Посмотрите на Windows Task Manager. Поскольку Процессы добавляют столбец "Handles" (в соответствии с меню View). Смотрите, чтобы видеть, продолжают ли дескрипторы повышаться без когда-либо отбрасывания.

Используйте профилировщика, чтобы видеть, есть ли у Вас Потоковые/Читатели/Устройства записи объекты вокруг этого, Вы не думаете, что должны иметь.

Править:

Спасибо за регистрацию кода... прочь для наблюдения его. Одна вещь - Ваши близкие методы, как и гарантируют, не выполнятся - первое завершение могло бы бросить и затем второе не будет работать.

РЕДАКТИРОВАНИЕ 2:

заключительный WavWriter wavWriter = новый WavWriter (OS); декодер LACDecoder = новый FLACDecoder;

Вышеупомянутые две строки заставят strams быть сохраненным в переменных экземпляра, по-видимому. Как тест видят, можно ли установить потоковые ссылки в NULL после decoder.decode (), вызов (сделайте decoder.cleanup () методом, возможно). Посмотрите, вызывает ли содержание на закрытые потоки проблему.

Кроме того, Вы делаете, какое-либо обертывание потоков передало в вышеупомянутых конструкторов? Раз так Вам, возможно, придется закрыть потоки через обертки.

0
ответ дан 3 December 2019 в 10:26
поделиться

Я предполагаю, что Вы используете jFlac. Я загрузил jFlac 1.3 и попробовал Ваш пример кода на flac, недавно загруженном с интернет-архива живой музыки. Для меня это работало. Я даже контролировал его с ProcessExplorer и видел, что дескрипторы файлов были открыты и затем выпущены. Ваш тестовый код действительно так же прост как что Вы дали нам, или это - упрощенная версия Вашего кода? Для меня, однажды близко () был назван, дескриптор был выпущен, и файл был впоследствии успешно удален.

Попытайтесь изменить свой бесконечный цикл на:

File toDelete = new File(path);
if (!toDelete.delete()) {
  System.out.println("Could not delete " + path);
  System.out.println("Does it exist? " + toDelete.exists());
}

или если Вы хотите сохранить цикличное выполнение, затем поместите 1 второй сон между попытками удалить файл. Я попробовал это JDK6 на WinXP Pro.

Не забывайте помещать попытку/выгоду вокруг Вашего close() и ошибки журнала, если завершение выдает исключение.

3
ответ дан 3 December 2019 в 10:26
поделиться

Если Вы вне подсказок и идей: В cygwin, CD к Вашему javaroot и выполненный что-то как:

find . -name '*.java' -print0 | xargs -0 grep "new.*new.*putStream"

Это могло бы предоставить нескольким подозреваемым...

0
ответ дан 3 December 2019 в 10:26
поделиться

Ваш пример кода должен определенно работать. На самом деле я выполнил Ваш, это на Java 1.6/Vista с jflac 1.3 и исходным файлом удалено без любого цикличного выполнения.

Я предполагаю в Вашем случае, другой процесс сохраняет файл открытым, возможно, индексатор поиска по компьютеру или антивирус. Вы можете procexp для нахождения, который процесс на самом деле содержит на файл.

0
ответ дан 3 December 2019 в 10:26
поделиться

Разве это не пустой цикл с условием продолжения?

Вы имеете:

try
{
...code
}
finally
{
}
while (something);

поместите некоторый пробел там, и Вы на самом деле имеете:

try
{
...code
}
finally
{
}


while (something)
   ;

Ваш цикл с условием продолжения не связан с Вашей попыткой/наконец. если Ваши исходные сбои оператора попытки и файл не будут созданы, то тот цикл с условием продолжения никогда не будет завершаться, потому что попытка/наконец никогда не будет выполняться во второй раз.

Вы намеревались сделать это {весь Ваш код} в то время как (Ваш в то время как оператор)? потому что это не то, что Вы имеете там.

РЕДАКТИРОВАНИЕ для разъяснения: мое предложение состояло бы в том, чтобы изменить Ваш цикл с условием продолжения, чтобы иметь больше информации того, почему это не может удалить:

while (!file.delete())
{
    if (!file.exists())
        break; // the file doesn't even exist, of course delete will fail

    if (!file.canRead())
        break; // the file isn't readable, delete will fail

    if (!file.canWrite())
        break; // the file isn't writable, delete will fail
}

потому что, если удаляют сбои однажды, его просто попытка перестать работать много раз и, конечно, его попытка зависнуть там. Вы не изменяете состояние файла в цикле.

Теперь, когда Вы добавили другую информацию, как Tomcat, и т.д., действительно ли это - проблема полномочий? Вы пытаетесь записать в файл, что пользовательский кот работает как (никто?) vm не может создать? или удалите файл, который не может удалить процесс кота?

Если в проводнике/и т.д. процесса говорится, что Java имеет блокировку на файле, то что-то все еще имеет открытый поток с помощью него. кто-то, возможно, не правильно звонил близко () на любых потоках, пишут в файл?

0
ответ дан 3 December 2019 в 10:26
поделиться

Еще одна вещь, которую нужно попробовать, так как вы используете Tomcat- - в вашем дескрипторе контекста (обычно Tomcat / conf / Catalina / localhost / your-context.xml) вы можете установить antiResourceLocking = true , который предназначен для «предотвращения блокировки ресурсов в Windows». Значение по умолчанию для этого (если вы не укажете) - false. Стоит попробовать.

0
ответ дан 3 December 2019 в 10:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: