Servlet - принудительно перезаписать загруженный файл - PullRequest
0 голосов
/ 17 декабря 2011

Как изменить этот код на принудительная перезапись существующий ранее открытый файл, сохраненный на диске? Это часть сервлета для открытия PDF-файлов на стороне клиента.

response.reset();
response.setContentType("application/pdf");
response.setContentLength(file.length());
response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;

try 
{
  input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE);
  output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);

  byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
  int length;
  while ((length = input.read(buffer)) > 0) 
  {
    output.write(buffer, 0, length);
  }
} 
finally 
{
  close(output);
  close(input);
}

Каждая следующая копия открытого файла имеет новый индекс, например, test.pdf, test (1) .pdf и т. д.

Ответы [ 3 ]

3 голосов
/ 17 декабря 2011

Вы не можете контролировать это.

Это зависит от реализации файловой системы ОС клиента

1 голос
/ 17 декабря 2011

Лучшее, что вы можете сделать, это настроить клиентский браузер, чтобы он спрашивал, перезаписывать или нет, например, в Firefox: enter image description here

Насколько мне известно, перезапись - это поведение по умолчанию в Opera.

0 голосов
/ 17 декабря 2011

перед тем как писать, проверьте, существует ли данный файл или нет? используя файл api file.exists (), если он существует, удалите данный файл с помощью файла api file.delete () и продолжите процесс записи

...