Hybris重写现有文件

时间:2018-10-17 13:56:17

标签: java file hybris

我正在实施服务,该服务应在Hybris后台存储csv文件,一个文件保存一天。 (并在完成特定过程后添加一行)

有什么方法可以重写该文件,因为我仍然得到的只是该文件的新版本。 是否有任何文档?恐怕help.hybris.com上没有任何内容

File fileForCatalog = ... // I'm able to get that file from backoffice and add a line
Media mediaForFile = MediaManager.getInstance().createMedia(fileForCatalog.getName());
// creates new file 
mediaForFile.setFile(fileForCatalog);
mediaForFile.writeReplace(); // creates duplicate

2 个答案:

答案 0 :(得分:3)

我建议将媒体与MediaService一起使用。

// Get media, f.e. by code
MediaModel media = mediaService.getMedia("myMediaCode");
InputStream oldInputStream = mediaService.getStreamFromMedia(media);
// add your logic to add a line
InputStream newInputStream = ...;
mediaService.setStreamForMedia(media, newInputStream);

查阅Adding characters to beginning and end of InputStream in Java,以获取有关如何将行添加到输入流的示例。

答案 1 :(得分:0)

我认为您需要使用Media Service和不知道的媒体,因为您不需要同步该媒体。

保存无意识的媒体:

final CatalogUnawareMediaModel media = modelService.create(CatalogUnawareMediaModel.class);
media.setCode(name);
media.setMime(MediaType.CSV_UTF_8.type());
media.setRealFileName(name + "_" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".csv");
modelService.save(media);
mediaService.setStreamForMedia(media, IOUtils.toInputStream(buffer));

您可以使用相同的 setStreamForMedia 方法来更新数据。