Вы не можете держать ручку файла удаляемого файла, а вы можете сохранить данные в байте массив временно удалите файл, а затем возвращает массив байтов
public byte[] method() {
File f =loadFile();
FileInputStream fis = new FileInputStream(f);
byte[] data = new byte[fis.available()];
fis.read(data);
f.delete();
return data;
}
// Edit Подход 2
FileInputStream input = new FileInputStream(f);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int bytesRead = input.read(buf);
while (bytesRead != -1) {
baos.write(buf, 0, bytesRead);
bytesRead = input.read(buf);
}
baos.flush();
byte[] bytes = baos.toByteArray();
можно построить файл данных из массива байтов
Однако, мое предложение заключается в использовании IOUtils.toByteArray (вход InputStream) от Jakarta commons, почему вы хотите повторно писать, когда уже в тарелке
Что вы имеете в виду по "возврату файла"? Знаете ли вы, что «Файл» на самом деле просто оболочка вокруг имени файла, которая может даже не существовать? Возможно, вы действительно хотите вернуть * содержимое * файла, как массив байтов, список строк или что-то подобное? –
И в системах Unix вы можете открыть файл и вернуть открытый дескриптор некоторого разнообразия, но Windows не позволит вам удалить открытый файл. – chrylis