Добавьте следующий код (после выполнения операций с файлом):
buffout.close();
fileoutput.close();
temp.delete();
Пока какой-либо поток в файле открыт, он блокируется (по крайней мере, в реализации Windows JVM). Поэтому его нельзя удалить.
Рекомендуется всегда проверять, все ли открытые потоки закрываются снова после использования, потому что это плохая ситуация утечки памяти. Ваше приложение может даже поглотить все доступные файловые дескрипторы, что может привести к неработоспособности системы.