14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/**************************************************************** 24ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Licensed to the Apache Software Foundation (ASF) under one * 34ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * or more contributor license agreements. See the NOTICE file * 44ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * distributed with this work for additional information * 54ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * regarding copyright ownership. The ASF licenses this file * 64ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * to you under the Apache License, Version 2.0 (the * 74ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * "License"); you may not use this file except in compliance * 84ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * with the License. You may obtain a copy of the License at * 94ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * * 104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 * 114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * * 124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Unless required by applicable law or agreed to in writing, * 134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * software distributed under the License is distributed on an * 144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * KIND, either express or implied. See the License for the * 164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * specific language governing permissions and limitations * 174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * under the License. * 184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira ****************************************************************/ 194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapackage org.apache.james.mime4j.util; 214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.IOException; 234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.InputStream; 244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.OutputStream; 254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/** 274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @version $Id: TempFile.java,v 1.3 2004/10/02 12:41:11 ntherning Exp $ 284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapublic interface TempFile { 304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Gets an <code>InputStream</code> to read bytes from this temporary file. 324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * NOTE: The stream should NOT be wrapped in 334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>BufferedInputStream</code> by the caller. If the implementing 344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>TempFile</code> creates a <code>FileInputStream</code> or any 354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * other stream which would benefit from being buffered it's the 364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>TempFile</code>'s responsibility to wrap it. 374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return the stream. 394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @throws IOException 404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira InputStream getInputStream() throws IOException; 424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Gets an <code>OutputStream</code> to write bytes to this temporary file. 454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * NOTE: The stream should NOT be wrapped in 464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>BufferedOutputStream</code> by the caller. If the implementing 474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>TempFile</code> creates a <code>FileOutputStream</code> or any 484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * other stream which would benefit from being buffered it's the 494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>TempFile</code>'s responsibility to wrap it. 504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return the stream. 524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @throws IOException 534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira OutputStream getOutputStream() throws IOException; 554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Returns the absolute path including file name of this 584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>TempFile</code>. The path may be <code>null</code> if this is 594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * an in-memory file. 604ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return the absolute path. 624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira String getAbsolutePath(); 644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Deletes this file as soon as possible. 674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira void delete(); 694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Determines if this is an in-memory file. 724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return <code>true</code> if this file is currently in memory, 744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <code>false</code> otherwise. 754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira boolean isInMemory(); 774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Gets the length of this temporary file. 804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 814ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return the length. 824ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 834ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira long length(); 844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira} 85