Description
Writes an InputStream to disk.
License
Open Source License
Parameter
Parameter | Description |
---|
source | the source stream |
target | the target disk location |
Exception
Parameter | Description |
---|
IOException | if the write encountered an error |
Declaration
public static void write(InputStream source, File target) throws IOException
Method Source Code
//package com.java2s;
/*/*from w w w. java 2 s.c o m*/
* Fabric3
* Copyright (c) 2009-2013 Metaform Systems
*
* Fabric3 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version, with the
* following exception:
*
* Linking this software statically or dynamically with other
* modules is making a combined work based on this software.
* Thus, the terms and conditions of the GNU General Public
* License cover the whole combination.
*
* As a special exception, the copyright holders of this software
* give you permission to link this software with independent
* modules to produce an executable, regardless of the license
* terms of these independent modules, and to copy and distribute
* the resulting executable under terms of your choice, provided
* that you also meet, for each linked independent module, the
* terms and conditions of the license of that module. An
* independent module is a module which is not derived from or
* based on this software. If you modify this software, you may
* extend this exception to your version of the software, but
* you are not obligated to do so. If you do not wish to do so,
* delete this exception statement from your version.
*
* Fabric3 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the
* GNU General Public License along with Fabric3.
* If not, see <http://www.gnu.org/licenses/>.
*
* ----------------------------------------------------
*
* Portions originally based on Apache Tuscany 2007
* licensed under the Apache 2.0 license.
*
*/
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class Main {
/**
* Writes an InputStream to disk.
*
* @param source the source stream
* @param target the target disk location
* @throws IOException if the write encountered an error
*/
public static void write(InputStream source, File target) throws IOException {
RandomAccessFile file = new RandomAccessFile(target, "rw");
FileChannel channel = null;
FileLock lock = null;
try {
channel = file.getChannel();
lock = channel.lock();
ByteBuffer buffer = ByteBuffer.allocate(1024);
byte[] bytes = buffer.array();
int limit;
while (-1 != (limit = source.read(bytes))) {
buffer.flip();
buffer.limit(limit);
while (buffer.hasRemaining()) {
channel.write(buffer);
}
buffer.clear();
}
channel.force(true);
} finally {
if (channel != null) {
if (lock != null) {
lock.release();
}
channel.close();
}
file.close();
}
}
}
Related
- mmap(File file, long offset, long length, boolean writeable)
- newWriteableBuffer(int capacity)
- write(File file, String content, String encoding)
- write(Path file, String content)
- write(SeekableByteChannel channel, long start, byte[] bytes)
- write24BitInteger(int integer, ByteOrder order)
- writeByte(WritableByteChannel channel, byte value)