如果文件已经存在,我想使用Apache Commons VFS将文本附加到文件中,如果文件不存在,则创建一个包含文本的新文件。
查看Javadoc for VFS,FileContent类中的getOutputStream(boolean bAppend)方法似乎可以完成这项工作,但经过相当广泛的谷歌搜索,我不知道如何使用getOutputStream将文本附加到文件中。
我将与VFS一起使用的文件系统是本地文件(file://)或CIFS(smb://)。
使用VFS的原因是,我正在开发的程序需要能够使用与执行该程序的用户不同的特定用户名/密码写入CIFS共享,并且我希望能够灵活地写入本地文件系统或共享,因此我不只是使用JCIFS。
如果有人能为我指明正确的方向或提供一段代码,我将不胜感激。
以下是如何使用Apache Commons VFS:
FileSystemManager fsManager;
PrintWriter pw = null;
OutputStream out = null;
try {
fsManager = VFS.getManager();
if (fsManager != null) {
FileObject fileObj = fsManager.resolveFile("file://C:/folder/abc.txt");
// if the file does not exist, this method creates it, and the parent folder, if necessary
// if the file does exist, it appends whatever is written to the output stream
out = fileObj.getContent().getOutputStream(true);
pw = new PrintWriter(out);
pw.write("Append this string.");
pw.flush();
if (fileObj != null) {
fileObj.close();
}
((DefaultFileSystemManager) fsManager).close();
}
} catch (FileSystemException e) {
e.printStackTrace();
} finally {
if (pw != null) {
pw.close();
}
}
我不熟悉VFS,但您可以用PrintWriter包装OutputStream,并使用它来附加文本。
PrintWriter pw = new PrintWriter(outputStream);
pw.append("Hello, World");
pw.flush();
pw.close();
请注意,PrintWriter使用默认的字符编码。