我试图将一个字符串附加到存储在S3中的文本文件的末尾.目前我只是将文件的内容读入一个String,追加我的新文本并将文件重新保存回S3.有一个更好的方法吗.我想,当文件是>>> 10MB然后读取整个文件不是一个好主意所以我该如何正确地做到这一点?
当前代码[代码]
private void saveNoteToFile( String p_note ) throws IOException, ServletException
{
String str_infoFileName = "myfile.json";
String existingNotes = s3Helper.getfileContentFromS3( str_infoFileName );
existingNotes += p_note;
writeStringToS3( str_infoFileName , existingNotes );
}
public void writeStringToS3(String p_fileName, String p_data) throws IOException
{
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( p_data.getBytes());
try {
streamFileToS3bucket( p_fileName, byteArrayInputStream, p_data.getBytes().length);
}
catch (AmazonServiceException e)
{
e.printStackTrace();
} catch (AmazonClientException e)
{
e.printStackTrace();
}
}
public void streamFileToS3bucket( String p_fileName, InputStream input, long size)
{
//Create sub folders …Run Code Online (Sandbox Code Playgroud) 关于这个主题有几个问题,但是没有一个问题可以说明为什么应该或不应该是databaseHelper的单个或多个实例.什么时候拥有DatabaseHelper的多个实例,什么时候不是.复杂性较低(如果实际情况确实如此)是一个足够的理由只有一个实例吗?
我手动创建了我的数据库,然后使用Hibernate工具生成我的Pojo,DAO.当我创建一个对象并将其持久保存到数据库时,它似乎工作正常
DefinitionT def = new DefinitionT();
def.setSelected(false);
def.setValue(sqlEncode(definition));
def.setWordId(wordT.getId());
definitionTDao.persist(def);
Run Code Online (Sandbox Code Playgroud)
这是我的persist()方法
public void persist(Object o)
{
try
{
hSession.persist(o);
hSession.flush();
}
catch (Exception e)
{
hTransaction.rollback();
log.error(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我的线程完成时,数据库将使用新对象进行更新.但是,我注意到如果在调用persist()之后直接停止程序,则数据库将不会更新.事实上,无论我执行了多少操作,似乎没有任何东西似乎在DB中更新,直到线程完成.我以为flush()将hibernate缓存中的所有更新推送到数据库中?我错过了什么?我认为这是同样的问题,因为Hibernate flush不更新数据库,但我没有任何for循环继续.
我正在使用eclipse开发一个GWT应用程序,我想知道是否有一种方法可以热插拔我所做的客户端代码更改,而无需每次都进行完整的Google Compile.目前,当我修改代码时,我会进行Google编译,然后单击"重新加载服务器"按钮,然后刷新浏览器以获取更改.这开始变得有点痛苦,因为当我可能只修改了一个UI字符串需要10-20秒才能进行完全编译,因此我们想知道是否有更快的方法.