一、复制文本文件

将G盘的文本文件拷贝到D盘上

也就是 读取G盘中文本文件的数据。写入D盘中->连读带写

而剪切呢。就是连读带写后,删除原盘的文件

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class Main
{
public static void main(String[] args) throws IOException { FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("G盘.txt");
fw = new FileWriter("D:\\ACM.txt");
char[] ch = new char[1024];//缓存读取的数据
int t ;
while((t = fr.read(ch))!=-1){
fw.write(ch,0,t);
}
} catch (Exception e) {
System.out.println("读写失败");
}finally{
if(fw!=null)
{
try {
fw.close();
} catch (Exception e2) {
throw new RuntimeException();
}
}
if(fr!=null){
try {
fr.close();
} catch (Exception e2) {
throw new RuntimeException();
}
}
}
}
}</strong></span>



一个文件假设正在使用,是不能被删除的,所以注意要将这两个动作关联起来



二、字符流的缓冲区

实际上,上面的char[]数组就是一个缓冲区。缓冲区的出现提高了对数据的读取效率

BufferedWriter类、BufferedReader类

前提:缓冲区必须结合流才干使用

作用:在流的基础上对流的功能进行了增强

BufferWriter类演示

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

能够指定缓冲区的大小。或者接受默认的大小。在大多数情况下,默认值就足够大了。

特有方法:newLine()

<span style="font-family:KaiTi_GB2312;font-size:18px;">import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; public class Main
{
public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("ACM.txt");
//创建一个字符写入流的缓冲区对象,并和指定要被缓冲的流对象相关联
BufferedWriter bw = new BufferedWriter(fw);
//使用缓冲去的方法,将数据写入到缓冲区中
bw.write("ACM。 。。。");
bw.newLine();//实际上 System.getproperty("line.separator");
bw.write("acm");
//在用缓冲去的刷新方法,将数据写入目的地
bw.newLine();
bw.flush();
for(int i = 0;i<5;i++){
bw.write("1111");
bw.newLine();
bw.flush();
}
//关闭缓冲区,事实上关闭的就是被缓冲的流对象fw
bw.close();
}
}
</span>

BufferedReader类演示

从字符输入流中读取文本。缓冲各个字符,从而实现字符、数组和行的高效读取。

能够指定缓冲区的大小,或者可使用默认的大小。大多数情况下。默认值就足够大了。

特有方法:readLine()



<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException; public class Main
{ public static void main(String[] args) throws IOException { FileReader fr = new FileReader("ACM.txt"); BufferedReader br = new BufferedReader(fr); String str = null; while((str = br.readLine())!= null){
System.out.println(str);
}
br.close();
}
}
</strong></span>



注意:

readLine()方法:使用了读取缓冲区的read方法,将读取到的字符进行缓冲并推断换行标记。将标记前的缓冲数据变成字符串并返回

JAVA学习第四十八课 — IO流(二):文件的复制 &amp; 缓冲区1的更多相关文章

  1. JAVA学习第四十五课 — 其它对象API(一)System、Runtime、Math类

    一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫 ...

  2. JAVA学习第四十六课 — 其它对象API(二)Date类 &amp; Calendar类(重点掌握)

    Date类(重点) 开发时,会时常遇见时间显示的情况,所以必须熟练Date的应用 <span style="font-family:KaiTi_GB2312;font-size:18p ...

  3. NeHe OpenGL教程 第四十八课:轨迹球

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. java基础(十八)IO流(一)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  5. JAVA学习第三十六课(经常使用对象API)— Set集合:HashSet集合演示

    随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里非常多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发经常使用 HashSet集合 .TreeSet ...

  6. Java成长第四集--文本处理IO流

    Java IO流在实际业务中使用的频率还是蛮高的,一些业务场景比如,文件的上传和导出,文件的读取等基本都是通过操作IO流来实现的,所以IO流是我们现在学习过程中必须要掌握的技能之一,熟练的使用IO流, ...

  7. IO流----读取文件,复制文件,追加/插入文件

    文件结构 读取文件 第一种方式 public class Test { public static void main(String[] args) throws IOException { // 最 ...

  8. Java学习笔记(十八)——Java DTO

    [前面的话] 在和技术人员的交流中,各种专业术语会出现,每次都是默默的记录下出现的术语,然后再去网上查看是什么意思.最近做项目,需要使用到DTO,然后学习一下吧. 这篇文章是关于Java DTO的,选 ...

  9. JAVA学习第五十九课 — 网络编程概述

    网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...

随机推荐

  1. (二十四)linux新定时器:timefd及相关操作函数

    timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #inclu ...

  2. Windows基础-实时录音程序(WaveXXX)

    写在前面 一开始是打算用这个老接口做讯飞语音识别的程序,在转移到UWP时发现,这玩意在Windows Runtime中屏蔽(弃用)了,将来会更新使用WASAPI的程序 WaveRecorder类代码下 ...

  3. 从linux看android之二--java世界的盘古女娲

    在linux从内核态进入用户态运行init进程后启动的一个进程就是zygote.zygote是在android系统中创建java世界的盘古,他创建了第一个java虚拟机,同时他又是女娲,他成功地繁殖了 ...

  4. jmeter 多机负载压测与服务器性能监测

    环境: jmeter: apache-jmeter-3.3 jdk: 负载生成: 被测机: 一. 多机负载压测: 概述: 1.修改jmeter.properties配置文件 remote_hosts= ...

  5. matlab后处理保存avi动画

    有时候需要在后处理时,将图片一张张合成视频,下面介绍一种简单的方法: ... aviobj=VideoWriter('example.avi');%新建叫example.avi的文件 open(avi ...

  6. (25)C#windows服务

    http://www.cnblogs.com/knowledgesea/p/3616127.html http://jingyan.baidu.com/article/fa4125acb71a8628 ...

  7. Django REST framework(官方说明文档翻译)(1快速开始 )

    http://www.django-rest-framework.org/tutorial/quickstart/ 第一部分:快速开始 我们将创建一个简单的api接口,用来给admin用户查看及编辑系 ...

  8. JavaScript 函数调用的 this词法

    函数调用时的this实际上是在函数被调用时发生绑定,它指向什么完全取决于函数在哪里被调用. 特例:当函数作为构造函数被调用时,即使用new 来构造一个新对象,会自动执行以下操作: [1]创建一个新对象 ...

  9. Android的数据存储方式概述

    数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...

  10. sql server 2008 R2 数据库文件大小限制

    select @@version SQL2005 分五个版本,如下所列: 1.Enterprise(企业版) 2.Development(开发版) 3.Workgroup,(工作群版) 4.Stand ...