2011-10-13 7 views
0

Mon webscript java-backed copie le fichier dans un référentiel dans un dossier temporaire et le modifie selon mes besoins. Au cours de son travail, un nouveau contenu est généré et il doit être écrit dans un fichier temporaire créé.Comment mettre à jour le contenu du fichier dans Alfresco?

Mais il y a un problème: le premier et le second code ci-dessous ne mettent pas à jour le contenu du fichier.

ContentWriter contentWriter = this.contentService.getWriter(tempFile, 
           ContentModel.PROP_CONTENT, true); 
contentWriter.putContent(content); 

Et la seconde:

` 
WritableByteChannel byteChannel = contentWriter.getWritableChannel(); 
ByteBuffer buffer = ByteBuffer.wrap(content.getBytes()); 
byteChannel.write(buffer); 
byteChannel.close(); 
` 

Comment mettre à jour le contenu du fichier?

Répondre

4

Cela fonctionne pour moi:

ContentWriter contentWriter = contentService.getWriter(noderef, ContentModel.PROP_CONTENT, true); 
     contentWriter.setMimetype("text/csv"); 
     FileChannel fileChannel = contentWriter.getFileChannel(false); 
     ByteBuffer bf = ByteBuffer.wrap(logLine.getBytes()); 
     try { 
      fileChannel.position(contentWriter.getSize()); 
      fileChannel.write(bf); 
      fileChannel.force(false); 
      fileChannel.close(); 
     } catch (IOException e){ 
      e.printStackTrace(); 
     } 

Je suis une ligne annexant à un fichier existant, donc logline est la chaîne de appending.

+0

Je souhaite remplacer tout le contenu du fichier temporaire. Votre code ne fonctionne pas pour cela. – Alexey

+0

Salut Si vous voulez tout remplacer, n'utilisez pas la ligne: fileChannel.position (contentWriter.getSize()); Ensuite, il utilisera par défaut 0 comme position de départ. –

+0

Cela ne fonctionne pas. J'ai essayé de commenter cette ligne et de mettre à zéro: fileChannel.position (0). Alfresco Web Client (/ alfresco) indique que le fichier a été modifié (date de modification), mais pas son contenu. – Alexey

Questions connexes