👉 We may earn a commission when you make a purchase, at no additional cost to you.
A complete learning experience in Java and object-oriented programming. With this book, you’ll learn the Java language with a unique method that goes beyond how-to manuals and helps you become a great programmer
In my previous article, we looked at different ways to convert an InputStream
instance to a file using Java. In this article, you’ll learn how to transform an InputStream
object into an OutputStream
object.
Tóm Tắt
Convert InputStream to OutputStream using InputStream.transferTo()
In Java 9 or higher, you can use the InputStream.transferTo()
method to copy data from InputStream
to OutputStream
. This method reads all bytes from this input stream and writes the bytes to the given output stream in the original order.
Here is an example:
try
(
InputStream
in =
Files
.
newInputStream
(
Paths
.
get
(
"input.txt"
)
)
;
OutputStream
out =
Files
.
newOutputStream
(
Paths
.
get
(
"output.txt"
)
)
)
{
long
length =
in.
transferTo
(
out)
;
System
.
out.
println
(
"Bytes transferred: "
+
length)
;
}
catch
(
IOException
ex)
{
ex.
printStackTrace
(
)
;
}
Convert InputStream to OutputStream using manual copy data
In Java 8 or below, you can manually copy data from an InputStream
to an OutputStream
object as shown below:
try
(
InputStream
in =
Files
.
newInputStream
(
Paths
.
get
(
"input.txt"
)
)
;
OutputStream
out =
Files
.
newOutputStream
(
Paths
.
get
(
"output.txt"
)
)
)
{
int
length;
byte
[
]
bytes =
new
byte
[
1024
]
;
while
(
(
length =
in.
read
(
bytes)
)
!=
-
1
)
{
out.
write
(
bytes,
0
,
length)
;
}
}
catch
(
IOException
ex)
{
ex.
printStackTrace
(
)
;
}
Convert InputStream to OutputStream using Apache Commons IO
The Apache Commons IO library provides the IOUtils.copy()
method to copy data from InputStream
to an OutputStream
as shown below:
try
(
InputStream
in =
Files
.
newInputStream
(
Paths
.
get
(
"input.txt"
)
)
;
OutputStream
out =
Files
.
newOutputStream
(
Paths
.
get
(
"output.txt"
)
)
)
{
int
bytesCopied =
IOUtils
.
copy
(
in,
out)
;
System
.
out.
println
(
"Bytes Copied: "
+
bytesCopied)
;
}
catch
(
IOException
ex)
{
ex.
printStackTrace
(
)
;
}
Don’t forget to include Apache Commons IO dependency to your Maven’s project pom.xml
file:
<
dependency>
<
groupId>
commons-io</
groupId>
<
artifactId>
commons-io</
artifactId>
<
version>
2.6</
version>
</
dependency>
For a Gradle project, add the following dependency to your build.gradle
file:
implementation 'commons-io:commons-io:2.6'
Further Reading
You may be interested in other Java I/O articles:
✌️ Like this article? Follow me on
Twitter
and LinkedIn.
You can also subscribe to
RSS Feed.