IO流 字符流 字节流 缓冲流 文件的复制
IO流
IO概述
IO流就是一个管道,是用来在设备之间传输数据
input:相对于内存/程序 往进走输入流
output:相对于内存/程序 往硬盘写入
分类
根据数据进出方式
1、输出流:
- FileWriter 字符输出流
- BufferedWriter 字符缓冲输出流
2、输入流:
- FileReader
- BufferedReader
根据读写数据的方式
- 字符流:文本文件 字符存储。读写过程可以按照一个或多个字符进行读写
字节流:图片、视频、音频 可以读取任何格式的文件。读写过程中可以一个或多个字节的读写
OutputStream
- FileOutSteram
- BufferedOutputSteram
- InputStream
- FileInputStream
- BufferedInputStream
在计算机底层存储任何文件是,都是按照字节的形式进行存储的。
利用字符流实现文件拷贝
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;/*** 利用字符流实现文件的拷贝* @author YandeHu**/
public class DemoFileCopy {public static void main(String[] args) throws Exception {//创建输入输出对象FileReader fr=new FileReader("E:\\01\\01\\a.txt");FileWriter fw=new FileWriter("E:\\01\\01\\b.txt");BufferedReader br=new BufferedReader(fr);BufferedWriter bw= new BufferedWriter(fw);//定义字符串类型的变量String line=null;while((line=br.readLine())!=null){System.out.println(line);bw.write(line);bw.newLine();bw.flush();}//关闭流bw.close();br.close();System.out.println("拷贝完成");}
}
字节流
- InputStream
- 构造方法
- read方法
- OutputStram
- 构造方法
- writer方法
文件字节输入\输出流的使用
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;public class DemoCoqyStream {public static void main(String[] args) throws Exception {//创建字节输入、输出流copyFile01();copyFile02();}/*** 封装方法* @throws Exception */public static void copyFile01() throws Exception{FileInputStream fi=new FileInputStream("E:\\01\\01\\1.jpg");FileOutputStream fo=new FileOutputStream("E:\\01\\01\\2.jpg");//读文件int len=-1;while((len=fi.read())!=-1){fo.write(len);}System.out.println("复制成功");fi.close();fo.close();}/*** 封装方法 一次复制一个数组的* @throws Exception */public static void copyFile02() throws Exception{FileInputStream fi=new FileInputStream("E:\\01\\01\\1.jpg");FileOutputStream fo=new FileOutputStream("E:\\01\\01\\3.jpg");//读取文件byte [] b=new byte[1024];int len=-1; //0 代表没有数据while((len=fi.read(b))!=-1){fo.write(b,0,len);}fi.close();fo.close();System.out.println(len+"复制成功");}
}
缓冲字节流输入\输出的使用
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** 利用缓冲字节流* @author YandeHu**/
public class DemoStreamBuffer {public static void main(String[] args) throws Exception {BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("c.txt"));//硬盘写bos.write("hello".getBytes());System.out.println("写入成功");//读byte []b=new byte[10];int len=-1;while((len=bis.read(b))!=-1){System.out.print(new String(b,0,len));}//bos.close();bis.close();}
}
利用字符输出流实现对文件内容的复制
过程是:先将要拷贝的文件读入到内存中,在将内容写入到另一个文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;/*** 利用字符流实现文件的拷贝* @author YandeHu**/
public class DemoFileCopy {public static void main(String[] args) throws Exception {//创建输入输出对象FileReader fr=new FileReader("E:\\01\\01\\a.txt");FileWriter fw=new FileWriter("E:\\01\\01\\b.txt");BufferedReader br=new BufferedReader(fr);BufferedWriter bw= new BufferedWriter(fw);//定义字符串类型的变量String line=null;while((line=br.readLine())!=null){System.out.println(line);bw.write(line);bw.newLine();bw.flush();}//关闭流bw.close();br.close();System.out.println("拷贝完成");}
}
利用缓冲字节输入\输出流实现单击文件目录内容的拷贝
步骤:方法的功能是 将指定文件的内容拷贝到目标目录,main函数的里的功能是遍历指定文件目录,如果文件的目录存在则复制文件到目标文件。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;/*** 复制单级文件夹* @author YandeHu*1、创建缓冲输入输出对象*2、读数据(一个字节数组,存储每次读到的一个数组的数据 ,定义一个整型 记录读取字节个数)*3、循环**/
public class DemoText {public static void main(String[] args) throws Exception {File file=new File("E:\\01\\01\\3.jpg");String destPath="E:\\01\\02";File dir=new File("E:\\01");File[] listFiles = dir.listFiles();if(listFiles==null){return;}else{//遍历文件列表for (File f : listFiles) {if(f.exists()){copy(file, destPath);}}System.out.println("拷贝成功");}}public static void copy(File file,String destPath) throws Exception{//创建缓冲流BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destPath+"\\"+file.getName()));byte []bArray=new byte[1024];int len=-1;while((len=bis.read(bArray))!=-1){bos.write(bArray,0,len);//将数组的内容写入到文件中}bis.close();bos.close();}
}
相关文章:

强烈推荐:240多个jQuery插件
http://www.cnblogs.com/Terrylee/archive/2007/12/09/the-ultimate-jquery-plugin-list.html转载于:https://www.cnblogs.com/HughTan/archive/2010/05/14/1735376.html

FreeBSD Ports加速的方法
使用代理。 在/etc/make.conf中设置:FETCH_ENV "HTTP_PROXYIP[:端口]"如果需要,在FETCH_ENV值后面加入空格,HTTP_PROXY_AUTHbasic:*:user:password利用其他机器下载的文件... 首先,请确保2台机器cvsup的一致࿰…

AngularJS ng-if使用
示例中,根据ng-if指令显示不同任务状态,以及判断任务是否可以操作 <div ng-app"NgifDemoApp" ng-controller"NgifDemoContrl as vm"><h1>任务列表</h1><table class"table"><thead><tr&…

一、Tableau基础
有关函数的官方文档:https://onlinehelp.tableau.com/current/pro/desktop/zh-cn/functions_functions_string.htm 注意事项: 1.记录数:是Tableau自动给每行观测值赋值为1。 2.维度的字段,是不能用于计算的,若是要用于计算&#x…

关于OGNL表达式中的%,$,#
OGNL表达式非常强大~其中#、%、$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分。1.#符号的用途一般有三种。 1)访问非根对象属性,例如示例中的#session.msg表达式&#…

JavaWeb项目第三次总结_成绩查询的实现
查询图书的功能实现 如何知道浏览器往服务器传入的参数 1、在编写好查询页面后,使用火狐浏览器的friebug (全部—>POST—>参数) 2、编写GradeListServlet,重写doGet()和doPOST(&#x…

cisco路由交换系统测试命令
路由交换系统测试命令通用测试命令:ping X.X.X.X :标准ping命令,用于测试设备间的物理连通性ping :扩展ping命令,也用于设备间的物理连通性,扩展ping命令还支持灵活定义ping命令的参数,比…

jquery下拉菜单
自己写的一个菜单(因为是初学 不知道能不能算无限级)jquery $(document).ready(function(){ $("ul li").hover(function(){ $(this).find("ul:first").show();//鼠标滑过查找li下面的第一个ul然后显示;},function(){ …

MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset
MongoDB update修改器: $inc $set $unset $push $pull $pop 针对Fields的$修改器 $set: { $set: { key: value } } $set:{"gender":"男"} 解释: $set 是update时的关键字,表示我要设置gender属性的值为"男" 如果该条Documents没有gen…

都是些什么人!
都是些什么人!转载于:https://www.cnblogs.com/liyugeng/p/7877615.html

IO流(二)转换流、序列化、commons-IO框架
转换流 介于字符流和字节流之间的流 字节流与字节流相互转换 OutputStreamWriter 输出流,按照指定的字符集编码,把字符流转化成字节数据 编码:把字符数据转换成字节数据; 解码:把字节数据转换成字符数据 二进制数据—&…

Http之Get/Post请求区别
今天在网上看了一些关于http 协议中get 和Post的文章。在此做一个总结,当是做一个笔记吧。 一、什么是HTTP-GET和HTTP-POST HTTP-GET和HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。每个HT…

[vb+mo] visual baisc 6.0 基于mapobjects 2.4 开发的数字化校园电子地图
程序的源代码下载地址: https://docs.google.com/ 请安装VB6.0企业版(不是企业版运行会报错,因为缺少相应的控件)和ESRI MO2.4 程序的质量一般,因为时间仓促,主要是毕业设计时间仓促.希望大家多多改进.有什么问题可以发邮件欢迎交流. 程序的主窗口代码: 通用变量定义Private l…

vsftp部署
1.安装该软件需要使用最高用户(root)进行安装,否则不能进行。 2.首先用命令检查VSFTP是否已经安装。chkconfig --list | grep vsftpd 3.安装vsftp。yum install –y vsftpd 4.启动vsftp。service vsftpd start 5.添加一个ftp用户。useradd f…

线程、线程匿名内部类、解决线程不安全的方式
线程 线程:正在运行的程序,是程序的执行路径;多线性 进程:是应用程序的载体,程序运行在虚拟机中。一个应用软件对应一个进程。 一个进程包含多个线程,一个线程对应一个进程。 好处:提高软件的运…

工作流编程循序渐进(9:使用本地服务在宿主和工作流之间通信)
工作流编程循序渐进(9:使用本地服务在宿主和工作流之间通信) 作者 朱先忠 [摘要]在本篇中,首先详细分析本地服务有关概念,探讨本地服务在工作流运行时、工作流实例及工作流宿主间的地位及作用…

使用Properties连接数据库
使用Properties连接数据库 要注意的是: 1.通过配置文件来连接数据库时,连接信息要以 mysql.XXX开头,否则会提示异常。 java.sql.SQLException: Access denied for user localhost (using password: YES)生成配置文件的实现代码 1、创建写入配置信息工…
两边横线,中间标题
<!DOCTYPE html> <html> <head> <title>两边横线,中间标题</title> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <style type"text/css"> <!--ul { mar…

交换机基础配置
请同学们下载附件中的实验并完成。转载于:https://blog.51cto.com/coffee0546/204093

python高级-模块(14)
一、python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的。 那么在Python中,如果要引用一些其他的函数,该怎么处理呢&am…

RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
上一篇已经讲了Rabbitmq如何在Windows平台安装,不懂请移步:RabbitMQ学习系列一:windows下安装RabbitMQ服务 一、理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实…

一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译)
创建路由 路由就是将URL路径映射到具体的物理文件。若要将路由添加到网站中,请使用 RouteCollection.MapPageRoute 方法将它们添加到RouteTable类的静态Routes属性。 将用于添加路由的方法添加到 Global.asax 文件中 如果网站还没有 Global.asax 文件,…

Properties持久的属性集
Properties 属性集合继承了Hashtable 属性包括属性名和属性值(键值对keyvalue) 作用 可以存储多个键值,与map相似可以把键值对存储到文件中可以把文件中的键值对读取到Properties对象中 构造方法: Properties() 创建一个无默认…

让你二十年后仍是人才
1.不管坐什么位置,都要保持学习的习惯出社会工作十年到十五年左右,会有一种「上下卡住」的闭塞感与无力感。因为,这个阶段的上班族虽然拥有一定的资历与经验,工作也得心应手,但上面有比自己更资深的前辈压着࿰…

Django ORM操作
Django ORM操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果<2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选…

ChineseCalendar类[转]
///<summary>///Title: ChineseCalendar类 ///Description: 中文日期工具类 ///author 万灵杰[作者] ///version 1.0.0.0 ///date 2009年7月30日 ///modify ///date ///</summary>publicclassChineseCalendar { privatestaticrea…

程序员的自我救赎---13.1:职场招聘与面试心得
《前言》 《目录》 (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心 (五)钱包系统 (六)GPU支付中心 &…

网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
网络概述 协议 在网络之间传出数据时需要按照指定的标准来传输,标准中规定了数据的格式、大小、传输的方式、传输速率。形成统一规范—>按照规范开发的代码—>协议(应用层、传输层、网络层、链路层) InetAddress类 用来分装网络地址…

set debug mode for flex builder
1. 要具备debug功能,我们必须要首先安装Flash Player Debug 版本。windows版本2. 安装好debug版本后,我们还需要添加日志的配置文件mm.cfg。该配置文件存放的目录如下:Macintosh OS X MacH D:Library:Application Support:macromedia:mm.cfgM…

XML 解析XML文档 XML约束
XML 什么是XML Extensible Markup Language(可扩展的标记语言)他是一个语言,有自己的语法,和Java以及其他的编程无关“标记” 在文件中包含类似于张三 ,这种用尖括号括起来的叫标记,使用来标记数据的。标…