例: open method

  1. 次の例は、ディレクトリ内にある通常のファイルの情報を取得します。情報の取得は、各ファイルをストリームとして開いて行います。エージェントは、ファイルごとに同じ NotesStream オブジェクトを開いたり閉じたりして再利用します。
    import lotus.domino.*;
    import java.io.File;
    
    public class JavaAgent extends AgentBase {
    
      public void NotesMain() {
    
        try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
    
          // (Your code goes here)
          Stream stream = session.createStream();
          int bytes = 0;
          File directory = new File("C:¥¥StreamFiles");
          String[] files = directory.list();
          for (int i = 0; i < files.length; i++) {
            if (stream.open(directory + "¥¥" + files[i])) {
              bytes = bytes + stream.getBytes();
              stream.close();
            }
            else
              throw new NotesException
                (NotesError.NOTES_ERR_FILEOPEN_FAILED, "Open failed");
          }
          System.out.println("Number of files = " + files.length);
          System.out.println("Total bytes = " + bytes);
          
        } catch(NotesException e) {
          e.printStackTrace();
    
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
  2. 次のエージェントは、読み込みのためにファイルをストリームとして開きます。
    import lotus.domino.*;
    
    public class JavaAgent extends AgentBase {
    
      public void NotesMain() {
    
        try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
    
          // (Your code goes here)
          String inPath = "c:¥¥StreamFiles¥¥readme.txt";
          
          // Get the input file
          Stream inStream = session.createStream();
          if (inStream.open(inPath, "ASCII")) {
            if (inStream.getBytes() > 0) {
              Database db = agentContext.getCurrentDatabase();
              Document doc = db.createDocument();
              doc.replaceItemValue("Form", "Main Topic");
              doc.replaceItemValue("Subject", inPath);
              doc.replaceItemValue("Body", inStream.readText());
              inStream.close();
              doc.save(true, true);
            }
            else
              System.out.println("Input file has no content");
          }
          else
            System.out.println("Input file open failed");
          
        } catch(NotesException e) {
          e.printStackTrace();
    
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
    
     
  3. 次のエージェントは、書き込みのためにファイルを開きます。
    import lotus.domino.*;
    
    public class JavaAgent extends AgentBase {
    
      public void NotesMain() {
    
        try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
    
          // (Your code goes here)
          
          // Get the input file
          DocumentCollection dc = agentContext.getUnprocessedDocuments();
          Document doc = dc.getFirstDocument();
          String outPath =
          "c:¥¥StreamFiles¥¥" + doc.getItemValueString("Subject") + ".txt";
          Stream outStream = session.createStream();
          if (outStream.open(outPath, "ASCII")) {
            if (outStream.getBytes() == 0) {
              outStream.writeText(doc.getItemValueString("Body"));
              outStream.close();
            }
            else
              System.out.println("Output file exists and has content");
          }
          else
            System.out.println("Output file open failed");
          
        } catch(NotesException e) {
          e.printStackTrace();
    
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    }