เมธอด transferTo() คืออะไร?
Java 9 เพิ่มเมธอด transferTo() ให้กับคลาส InputStream ใช้สำหรับ คัดลอกข้อมูลจาก Input Stream ไปยัง Output Stream โดยอ่านไบต์ทั้งหมดจาก input stream และเขียนไปยัง output stream ตามลำดับที่อ่าน
Syntax
public long transferTo(OutputStream out) throws IOException
ตัวอย่างการใช้งาน
import java.util.Arrays;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class TransferToMethodTest {
public void testTransferTo() throws IOException {
byte[] inBytes = "tutorialspoint".getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(inBytes);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
bis.transferTo(bos);
byte[] outBytes = bos.toByteArray();
System.out.println(Arrays.equals(inBytes, outBytes));
} finally {
try { bis.close(); } catch(IOException e) { e.printStackTrace(); }
try { bos.close(); } catch(IOException e) { e.printStackTrace(); }
}
}
public static void main(String args[]) throws Exception {
TransferToMethodTest test = new TransferToMethodTest();
test.testTransferTo();
}
}
Output
true
ประโยชน์ของ transferTo()
- โค้ดสั้นและอ่านง่ายกว่าการวนลูปอ่าน/เขียนเอง
- จัดการ buffer และประสิทธิภาพได้ดีขึ้น (internal optimization)
- ลดโอกาสเกิดข้อผิดพลาดจากการจัดการ stream เอง
สรุป
เมธอด transferTo() เป็นวิธีที่สะดวกและมีประสิทธิภาพในการคัดลอกข้อมูลระหว่าง streams ใน Java 9 ขึ้นไป