zoukankan      html  css  js  c++  java
  • Java 中有几种类型的流?

    字节流和字符流。字节流继承于 InputStream、OutputStream,字符流继承于Reader、Writer。

    在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。

    关于 Java 的 I/O 需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);二是两种设计模式(适配器模式和装潢模式)。

    另外 Java 中的流不同于 C#的是它只有一个维度一个方向。

    编程实现文件拷贝。

    (这个题目在笔试的时候经常出现,下面的代码给出了两种实现方案)

    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();

    }

    }

    }

    }

    }

    注意:上面用到 Java 7 的 TWR,使用 TWR 后可以不用在 finally 中释放外部资源 ,

    从而让代码更加优雅。

  • 相关阅读:
    Github上的英文解释
    快速搭建脚手架的方法
    vue生命周期简介和钩子函数
    vue2.0 路由模式mode="history"的作用
    浅谈vue $mount()
    vue——解决“You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. ”
    Vue组件中的父子传值
    URL中的hash(井号)
    大数据-高并发网络基础1
    大数据-6Linux-shell编程
  • 原文地址:https://www.cnblogs.com/programb/p/13021442.html
Copyright © 2011-2022 走看看