I/O 流
输入流的几个常用方法:
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 流的更多相关文章
- 使用C#处理基于比特流的数据
使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...
- HTML 事件(三) 事件流与事件委托
本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...
- FILE文件流的中fopen、fread、fseek、fclose的使用
FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...
- BZOJ 3504: [Cqoi2014]危桥 [最大流]
3504: [Cqoi2014]危桥 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1407 Solved: 703[Submit][Status] ...
- java I/O流
输入流(读取数据的流) BufferedInputStream---继承--->FileInputStream--继承--->InputStream------> (1)字节流操作中 ...
- Ford-Fulkerson 最大流算法
流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...
- .NET基础拾遗(3)字符串、集合和流
Index: (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基础 ...
- C#开源实现MJPEG流传输
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 许久以前写了篇文章<基于.NET打造IP智能网络视频监控系统>,记录和介绍了自己几年来积 ...
随机推荐
- 使用Docker Swarm搭建分布式爬虫集群
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...
- JBoss/Wildfly 配置SQLserver服务器
JBoss/Wildfly 配置SQLserver服务器 http://blog.csdn.net/haitaolang/article/details/60467118 wildfly standa ...
- 洛谷P1463 反素数
经典题了,很难想到这TM是搜索...... 题意:求[1, n]中约数最多的数中最小的. 解:我们有约数个数定理. 所以考虑通过枚举每个质因数个数来直接计算出约数个数. 然后就可以搜索了. 注意:若p ...
- 小R的树(权限题)
解:考场上爆0了...... 回想怎么求两个排列的最长公共子序列. 回想怎么求1~n每个数恰出现两次的两个序列的最长公共子序列.就是每个数替换为它在另一个序列里的出现位置,降序. 所以我们可以把这每个 ...
- 没有上司的舞会 codevs 1380
上树DP,记忆化搜索. 本题老师讲的方法是直接树形DP,但是由于我对树并不够了解,什么dfs也不想尝试(虽然感觉自己可以搞),于是搞了个结构体存点以及该点的信息,用f[i][j]作为记忆化数组.以后最 ...
- Java programming problems
1.使用循环把26个字母按字典顺序存入数组,在不使用另外数组的情况下将其逆序存放,在根据处理后的字符数组创建一个字符串并输出 public static void main(String[] args ...
- celery分布式异步框架
1.什么是Celery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件( ...
- TestNg 10. 多线程测试-xml文件实现
代码如下: package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiT ...
- TODO java-awt中文乱码--疑惑
参考:http://blog.sina.com.cn/s/blog_025270e90101b1db.html 1.IDE工具是eclipse,检查了编码是UTF-8,控制台中是中文,用awt就会乱码 ...
- oracle 12C版本的下载安装
首先 去官网下载自己需要的oracle对应的操作系统的版本 接受协议后可下载 1 下载解压好后 进入主目录 进行安装 在配置安全更新中把我希望通过My Oracle Support接收安全更新前面的 ...