2012-03-16 24 views
2

ファイルがすでに存在する場合はApache Commons VFSを使用してファイルにテキストを追加し、ファイルが存在しない場合はテキストを含む新しいファイルを作成します。Apache Commons VFSを使用してファイルに追加する

VFS用のJavadocを見ると、FileContentクラスのgetOutputStream(boolean bAppend)メソッドが機能しますが、かなり広範なGoogle検索の後にgetOutputStreamを使用してテキストをファイルに追加する方法がわかりません。

VFSで使用するファイルシステムは、ローカルファイル(file://)またはCIFS(smb://)です。

VFSを使用する理由は、私が取り組んでいるプログラムは、プログラムを実行しているユーザーとは異なる特定のユーザー名/パスワードを使用してCIFS共有に書き込む必要があります。ローカルのファイルシステムや共有のため、なぜ私はJCIFSだけではないのですか?

誰かが正しい方向に私を指し示すことができ、コードスニペットを提供できるなら、私は非常に感謝します。

答えて

1

私はVFSに慣れていませんが、PrintWriterでOutputStreamをラップして、テキストを追加することができます。 PrintWriterのデフォルトの文字エンコーディングを使用しています

PrintWriter pw = new PrintWriter(outputStream); 
pw.append("Hello, World"); 
pw.flush(); 
pw.close(); 

注意。ここで

1

では、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(); 
    } 
} 
関連する問題