输入流的几个常用方法:

1,复制一个文件;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; public class copyDeno { public static void copy(String src, String dest) {//src 原文件,dest 待复制的文件
//这儿需要加下判断src是否为文件和是否存在,
InputStream in = null;
OutputStream out = null;
byte[] b = new byte[1024];
int len;
try {
in = new FileInputStream(src);
out = new FileOutputStream(dest);
while ((len=in.read(b) )!= -1) {
out.write(b,0,len);
} } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
public static void copyWithBuffer(String src, String dest) {//以上加入缓冲流
InputStream in = null;
OutputStream out = null;
byte[] b = new byte[20];
int len;
try {
in = new BufferedInputStream(new FileInputStream(src));
out =new BufferedOutputStream(new FileOutputStream(dest));
while ((len=in.read(b) )!= -1) {
out.write(b,0,len);
}
//out.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
Release.free(in, out); }
}
public static void main(String[] args) throws IOException { copy("F:\\Word\\eclipseword\\a4\\file\\a.txt", "F:\\Word\\eclipseword\\a4\\copyfile\\a1.txt");
copyWithBuffer("F:\\Word\\eclipseword\\a4\\file\\b.txt", "F:\\Word\\eclipseword\\a4\\copyfile\\b1.txt"); }
}

封装一个关闭流(释放资源)方法:

package IO;

import java.io.Closeable;
import java.io.IOException;
public class Release {
public static void free(Closeable...stream){
for(Closeable st:stream){
if(st != null){
try {
st.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
}

  2,复制一个文件夹的所有内容到另外一个文件夹中


package IOfuxi;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


import IO.Release;


/*复制多级文件夹
* A:封装数据源File
* B:封装目的地File
* C:判断该File是文件夹还是文件
* a:是文件夹
* 就在目的地目录下创建该文件夹
* 获取该File对象下的所有文件或者文件夹File对象
* 遍历得到每一个File对象
* 回到C
* b:是文件
* 就复制(字节流)
* */
public class CopyFolderduo {


public static void main(String[] args) throws IOException {
copyfolder("F:\\Word\\eclipseword\\a4\\file",
"D:\\Java视频\\day21\\day21");

}

private static void copyfolder(String src,String des) throws IOException{
File file=new File(src);
File newfile=new File(des);
//判断文件是否存在
if(!file.exists()||!newfile.exists()){
return;
}else{
fuzhi(file,newfile);
}

}


private static void fuzhi(File file, File newfile) throws IOException {

// 判断该File是文件夹还是文件
if(file.isDirectory()){
File newFloder=new File(newfile,file.getName());
//创建目标路径文件夹
newFloder.mkdir();
//// 获取该File对象下的所有文件或者文件夹File对象
File[] arrfile=file.listFiles();
for(File f:arrfile){
//递归调用
fuzhi(f,newFloder);
}

}else{
File newf=new File(newfile,file.getName());
copyfile(file,newf);

}

}


//复制文件的方法
private static void copyfile(File file, File newf) throws IOException {
BufferedInputStream in= new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(newf));
byte[] arr=new byte[1024];
int len;
while((len=in.read(arr))!=-1){
out.write(arr, 0, len);
out.flush();
}
// out.flush();
Release.free(in,out);
}


}

 

3.压缩一个文件夹

 package zy823;

 import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; public class zipFolder {
public static void zipFile(String src,String dest){
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(dest)));//
File fileSrc = new File(src);
if(!fileSrc.exists()){
throw new FileNotFoundException();
}else{
zip(fileSrc.getName(),zos,fileSrc);
zos.flush();
zos.close();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
private static void zip(String dest,ZipOutputStream zos,File src)throws Exception{
byte[] b = new byte[1024];
InputStream is = null;
if(src.isFile()){
zos.putNextEntry(new ZipEntry(dest));
is = new BufferedInputStream(new FileInputStream(src));
int len;
while((len = is.read(b)) != -1){
zos.write(b, 0, len);
}
zos.flush();
is.close();
zos.closeEntry();
}else{
File[] files = src.listFiles();
zos.putNextEntry(new ZipEntry(dest+"/"));
for(File temp:files){
zip(dest+"/"+temp.getName(),zos,temp);
}
}
} }

I/O 流的更多相关文章

  1. 使用C#处理基于比特流的数据

    使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...

  2. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

  3. FILE文件流的中fopen、fread、fseek、fclose的使用

    FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...

  4. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  5. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  6. BZOJ 3504: [Cqoi2014]危桥 [最大流]

    3504: [Cqoi2014]危桥 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1407  Solved: 703[Submit][Status] ...

  7. java I/O流

    输入流(读取数据的流) BufferedInputStream---继承--->FileInputStream--继承--->InputStream------> (1)字节流操作中 ...

  8. Ford-Fulkerson 最大流算法

    流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...

  9. .NET基础拾遗(3)字符串、集合和流

    Index: (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基础 ...

  10. C#开源实现MJPEG流传输

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 许久以前写了篇文章<基于.NET打造IP智能网络视频监控系统>,记录和介绍了自己几年来积 ...

随机推荐

  1. ftp sun jdk自带

    package com.italktv.colnv.stat.util; import java.io.File; import java.io.FileInputStream; import jav ...

  2. [luogu3377][左偏树(可并堆)]

    题目链接 思路 左偏树的模板题,参考左偏树学习笔记 对于这道题我是用一个并查集维护出了哪些点是在同一棵树上,也可以直接log的往上跳寻找根节点 代码 #include<cstdio> #i ...

  3. [luogu3388][割点]

    题目链接 思路 真板子题.割点是指在一个无向图中,删去之后图将不再连通的点.可以用tarjan算法求.根据割点有两种情况,一种是根,一种是非根.如果不是根的就去判断在tarjan的时候当前节点所能到的 ...

  4. c/c++ 大于等于 大于 时间效率比较

    变成汇编,都是: 大于等于和大于都是电路上的处理,时间上应该差不多.

  5. 为Druid监控配置访问权限(配置访问监控信息的用户与密码)

    转: l 为Druid监控配置访问权限(配置访问监控信息的用户与密码) 2014-09-26 09:21:48         来源:renfufei的专栏   收藏   我要投稿   Druid是一 ...

  6. 第六节,TensorFlow编程基础案例-保存和恢复模型(中)

    在我们使用TensorFlow的时候,有时候需要训练一个比较复杂的网络,比如后面的AlexNet,ResNet,GoogleNet等等,由于训练这些网络花费的时间比较长,因此我们需要保存模型的参数. ...

  7. 第五节,Neural Networks and Deep Learning 一书小节(中)

    在这一节,我们对上一个程序(Network1.py)进行了优化 3.改进神经网络的学习方法 (1)交叉熵代价函数的引入 Network1程序采用了S型神经元,S型神经元存在一个问题,当输出层神经元的输 ...

  8. ASCLL、Unicode和UTF-8编码的理解

    我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit) ...

  9. E212: Can't open file for writing

    意思是不能保存. 原因是权限不够,普通用户用vi 进行不了保存,需要使用超级用户才可以 命令:sudo su     转换成超级用户 vi hello       打开文件 :wq 即可保存退出

  10. Go-day01

    Go-实现hello_world package main import "fmt" func main() { fmt.Println("hello world!&qu ...