Package org.alfresco.repo.web.scripts
Class TempOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- org.alfresco.repo.web.scripts.TempOutputStream
-
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
public class TempOutputStream extends OutputStream
An output stream implementation that keeps the data in memory if is less then the specified memoryThreshold otherwise it writes it to a temp file. Close the stream before any call toTempOutputStream
.getInputStream(). If deleteTempFileOnClose is false then use proper try-finally patterns to ensure that the temp file is destroyed after it is no longer needed.try { StreamUtils.copy(new BufferedInputStream(new FileInputStream(file)), tempOutputStream); tempOutputStream.close(); } finally { tempOutputStream.destroy(); }
-
-
Field Summary
Fields Modifier and Type Field Description static String
TEMP_FILE_PREFIX
-
Constructor Summary
Constructors Constructor Description TempOutputStream(File tempDir, int memoryThreshold, long maxContentSize, boolean encrypt, boolean deleteTempFileOnClose)
Creates a TempOutputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
destroy()
Closes the stream and removes the backing file (if present).void
flush()
InputStream
getInputStream()
Returns the data as an InputStreamlong
getLength()
void
write(byte[] b, int off, int len)
void
write(int b)
-
Methods inherited from class java.io.OutputStream
nullOutputStream, write
-
-
-
-
Field Detail
-
TEMP_FILE_PREFIX
public static final String TEMP_FILE_PREFIX
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
TempOutputStream
public TempOutputStream(File tempDir, int memoryThreshold, long maxContentSize, boolean encrypt, boolean deleteTempFileOnClose)
Creates a TempOutputStream.- Parameters:
tempDir
- the temporary directory, i.e.isDir == true
, that will be used as * parent directory for creating temp file backed streamsmemoryThreshold
- the memory threshold in BmaxContentSize
- the max content size in Bencrypt
- true if temp files should be encrypteddeleteTempFileOnClose
- true if temp files should be deleted on output stream close (useful if we need to cache the content for further reads). If this is false then we need to make sure we callTempOutputStream
.destroy to clean up properly.
-
-
Method Detail
-
getInputStream
public InputStream getInputStream() throws IOException
Returns the data as an InputStream- Throws:
IOException
-
write
public void write(int b) throws IOException
- Specified by:
write
in classOutputStream
- Throws:
IOException
-
write
public void write(byte[] b, int off, int len) throws IOException
- Overrides:
write
in classOutputStream
- Throws:
IOException
-
flush
public void flush() throws IOException
- Specified by:
flush
in interfaceFlushable
- Overrides:
flush
in classOutputStream
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classOutputStream
- Throws:
IOException
-
destroy
public void destroy() throws IOException
Closes the stream and removes the backing file (if present). If deleteTempFileOnClose is false then use proper try-finally patterns to ensure that the temp file is destroyed after it is no longer needed.try { StreamUtils.copy(new BufferedInputStream(new FileInputStream(file)), tempOutputStream); tempOutputStream.close(); } finally { tempOutputStream.destroy(); }
- Throws:
IOException
-
getLength
public long getLength()
-
-