我正在实施服务,该服务应在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
答案 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 方法来更新数据。