Foto não exclui

Quando faço o upload das fotos usando FileUpload não consigo excluir.

Uso esse StremedContent para ficar setando na lista contentNova toda vez que o método é chamado pelo FileUpload, o problema é quando excluo some apenas do (dataGrid) e não é decrementado da lista contentNova, com isso nos métodos salvarFotoNova() e criaArquivo() são escrita na pasta do servidor todas fotos que existe na lista contentNova incluido as que tentei excluir.

HTML

<div class="col-md-6">
    <p:outputLabel value="Foto Atual " style="font-size: 17px;" />
     <div class="row">
     <p:fileUpload  label="Anexar Foto" 
        fileUploadListener="#{ordemServicoMB.uploadNova}" auto="true"
        mode="advanced" sizeLimit="3145728" 
        multiple="true" update="gridfotosNova" allowTypes="/(\.|\/)(gif|jpg|png|JPG|bmp|jpeg)$/"  />   
     </div>
  <p:dataGrid id="gridfotosNova" value="#{ordemServicoMB.contentNova}" var="linfotosNova" columns="1" emptyMessage="">
     <p:column>
        <p:graphicImage value="#{linfotosNova.stream}" />
     </p:column>                                                                                                                                                                                                                                                                                                                                                                                  
     <p:column>
         <h:outputText  value="#{linfotosNova.name}"  />
     </p:column>                                                                                                                                                                                                                                                                                                                                                                                  
    </p:dataGrid>
   </div>  

JAVA

 private List<StreamedContent> contentNova = new ArrayList<>();    
public void uploadNova(FileUploadEvent evento) {
try {

    contentNova.add(new DefaultStreamedContent(evento.getFile().getInputstream(), evento.getFile().getFileName()));

} catch (IOException erro) {
    erro.printStackTrace();
    FacesUtils.showMessage(3, "Falha em carregar imagem");
}

}

  public void salvarFotoNova() {
    for (StreamedContent s : contentNova) {
        String nomeArquivo = s.getContentType();
        criaArquivo(nomeArquivo.getBytes(), nomeArquivo);
        }
   }

public void criaArquivo(byte[] bytes, String arquivo) {
try {
    FileOutputStream fos;
    fos = new FileOutputStream(arquivo);
    fos.write(bytes);
    fos.close();
} catch (Exception ex) {
    ex.printStackTrace();
    FacesUtils.showMessage(3, "Falha ao escrever imagem");
 }
 }

Vc deve estar ficando com algum stream aberto, dê close em todos que puder e teste.

Não entendi. Como fecho ele e onde?

poderia me mostrar com mais detalhes

fos é um stream e vc deu close nele.
Verifique todo seu código onde vc usou stream para isso e os feche.
Lembre que se der erro no meio deste código o stream ficará aberto, tbm precisa garantir o fechamento com finally

acabei de fazer isso, e nao deu certo, o problema deve ta no método uploadNova, pois nao decrementa da lista de StreamedContent

acabou de fazer oque exatamente? procurou todos streamings, encontrou, fechou-os devidamente e não funcionou? :thinking: