Home | History | Annotate | Download | only in util
      1 /****************************************************************
      2  * Licensed to the Apache Software Foundation (ASF) under one   *
      3  * or more contributor license agreements.  See the NOTICE file *
      4  * distributed with this work for additional information        *
      5  * regarding copyright ownership.  The ASF licenses this file   *
      6  * to you under the Apache License, Version 2.0 (the            *
      7  * "License"); you may not use this file except in compliance   *
      8  * with the License.  You may obtain a copy of the License at   *
      9  *                                                              *
     10  *   http://www.apache.org/licenses/LICENSE-2.0                 *
     11  *                                                              *
     12  * Unless required by applicable law or agreed to in writing,   *
     13  * software distributed under the License is distributed on an  *
     14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
     15  * KIND, either express or implied.  See the License for the    *
     16  * specific language governing permissions and limitations      *
     17  * under the License.                                           *
     18  ****************************************************************/
     19 
     20 package org.apache.james.mime4j.util;
     21 
     22 import java.io.IOException;
     23 import java.io.InputStream;
     24 import java.io.OutputStream;
     25 
     26 /**
     27  * @version $Id: TempFile.java,v 1.3 2004/10/02 12:41:11 ntherning Exp $
     28  */
     29 public interface TempFile {
     30     /**
     31      * Gets an <code>InputStream</code> to read bytes from this temporary file.
     32      * NOTE: The stream should NOT be wrapped in
     33      * <code>BufferedInputStream</code> by the caller. If the implementing
     34      * <code>TempFile</code> creates a <code>FileInputStream</code> or any
     35      * other stream which would benefit from being buffered it's the
     36      * <code>TempFile</code>'s responsibility to wrap it.
     37      *
     38      * @return the stream.
     39      * @throws IOException
     40      */
     41     InputStream getInputStream() throws IOException;
     42 
     43     /**
     44      * Gets an <code>OutputStream</code> to write bytes to this temporary file.
     45      * NOTE: The stream should NOT be wrapped in
     46      * <code>BufferedOutputStream</code> by the caller. If the implementing
     47      * <code>TempFile</code> creates a <code>FileOutputStream</code> or any
     48      * other stream which would benefit from being buffered it's the
     49      * <code>TempFile</code>'s responsibility to wrap it.
     50      *
     51      * @return the stream.
     52      * @throws IOException
     53      */
     54     OutputStream getOutputStream() throws IOException;
     55 
     56     /**
     57      * Returns the absolute path including file name of this
     58      * <code>TempFile</code>. The path may be <code>null</code> if this is
     59      * an in-memory file.
     60      *
     61      * @return the absolute path.
     62      */
     63     String getAbsolutePath();
     64 
     65     /**
     66      * Deletes this file as soon as possible.
     67      */
     68     void delete();
     69 
     70     /**
     71      * Determines if this is an in-memory file.
     72      *
     73      * @return <code>true</code> if this file is currently in memory,
     74      *         <code>false</code> otherwise.
     75      */
     76     boolean isInMemory();
     77 
     78     /**
     79      * Gets the length of this temporary file.
     80      *
     81      * @return the length.
     82      */
     83     long length();
     84 }
     85