How many types of streams are there in Java?

How many types of streams are there in Java?
Answer: byte stream and character stream. Byte stream inherits InputStream and OutputStream, character stream inherits Reader and Writer. At java.io There are many other streams in the package, mainly to improve performance and ease of use. There are two points to pay attention to about Java I/O: one is two kinds of symmetries (input and output symmetries, byte and character symmetries); the other is two kinds of design patterns (adapter pattern and decoration pattern). In addition, the flow in Java is different from C ා in that it has only one dimension and one direction.

Program to copy files.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public final class MyUtil {
    private MyUtil() {
        throw new AssertionError();
    }
    public static void fileCopy(String source, String target) throws IOException {
        try (InputStream in = new FileInputStream(source)) {
            try (OutputStream out = new FileOutputStream(target)) {
                byte[] buffer = new byte[4096];
                int bytesToRead;
                while((bytesToRead = in.read(buffer)) != -1) {
                    out.write(buffer, 0, bytesToRead);
                }
            }
        }
    }
    public static void fileCopyNIO(String source, String target) throws IOException {
        try (FileInputStream in = new FileInputStream(source)) {
            try (FileOutputStream out = new FileOutputStream(target)) {
                FileChannel inChannel = in.getChannel();
                FileChannel outChannel = out.getChannel();
                ByteBuffer buffer = ByteBuffer.allocate(4096);
                while(inChannel.read(buffer) != -1) {
                    buffer.flip();
                    outChannel.write(buffer);
                    buffer.clear();
                }
            }
        }
    }
}

Keywords: Java

Added by lixid on Thu, 17 Oct 2019 22:57:40 +0300