流 编写一个简单复制器
-
流的概念
在 Java 中,流是一种用于在程序中读写数据的抽象概念。它可以与多种类型的数据源和数据接收器(例如文件、网络连接、内存等)交互,并且可以使用各种过滤器和转换器来处理和修改数据。
Java 流分为输入流和输出流,每个流都有字节流和字符流两种形式。字节流以字节的形式读写数据,而字符流以字符的形式读写数据。InputStream 和 OutputStream 是用于字节操作的抽象类,而 Reader 和 Writer 是用于字符操作的抽象类。
Java 中提供了多种流实现类,包括 FileInputStream 和 FileOutputStream 用于读写文件,SocketInputStream 和 SocketOutputStream 用于网络通信等。通过使用这些类,程序可以轻松地通过Java代码读写不同类型的数据源和数据接收器。
-
流的形象理解(数据流通的载体/形式)
流就像是一条水流,数据就像是水一样在其中流动。就像水流经过河床、岩石和水闸等物体时会受到限制或改变方向一样,数据在流经不同的流过程(如过滤器或转换器)时也可能会被修改、处理或过滤。最终,这些数据将从流中流出,并被导入到程序中或其他外围设备中,就像水从河流中流出并进入海洋或湖泊一样。通过这种比喻,可以更好地理解流的特点和作用,并在编写代码时更加清楚和具有创造性地使用流。
-
使用 FileInputStream 和 FileOutputStream 编写一个简单的复制器
package IO; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyUtils { public static void copy(String src, String dest, int cap) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(src); fos = new FileOutputStream(dest); byte[] bytes = new byte[cap]; // 缓冲区 while(fis.read(bytes) != -1) { fos.write(bytes); fos.flush(); } } catch(IOException e) { e.printStackTrace(); throw new RuntimeException("文件复制失败:"+e.getMessage()); } finally { try { if(null != fos) fos.close(); } catch (IOException e) { throw new RuntimeException(e); } try { if(null != fis) fis.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }
编写一个main方法运行
public class Test { public static void main(String[] args) { String src = "C:\\Users\\17871\\Desktop\\UI.md"; String dest = "C:\\Users\\17871\\Desktop\\UI2.0.md"; CopyUtils.copy(src, dest, 128); } }
总之会变成两个文件,如果你出问题了,那我也不知道,大概率是文件被加密了吧