JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1
一、复制文本文件
将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流(二):文件的复制 & 缓冲区1的更多相关文章
- JAVA学习第四十五课 — 其它对象API(一)System、Runtime、Math类
一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫 ...
- JAVA学习第四十六课 — 其它对象API(二)Date类 & Calendar类(重点掌握)
Date类(重点) 开发时,会时常遇见时间显示的情况,所以必须熟练Date的应用 <span style="font-family:KaiTi_GB2312;font-size:18p ...
- NeHe OpenGL教程 第四十八课:轨迹球
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- java基础(十八)IO流(一)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- JAVA学习第三十六课(经常使用对象API)— Set集合:HashSet集合演示
随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里非常多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发经常使用 HashSet集合 .TreeSet ...
- Java成长第四集--文本处理IO流
Java IO流在实际业务中使用的频率还是蛮高的,一些业务场景比如,文件的上传和导出,文件的读取等基本都是通过操作IO流来实现的,所以IO流是我们现在学习过程中必须要掌握的技能之一,熟练的使用IO流, ...
- IO流----读取文件,复制文件,追加/插入文件
文件结构 读取文件 第一种方式 public class Test { public static void main(String[] args) throws IOException { // 最 ...
- Java学习笔记(十八)——Java DTO
[前面的话] 在和技术人员的交流中,各种专业术语会出现,每次都是默默的记录下出现的术语,然后再去网上查看是什么意思.最近做项目,需要使用到DTO,然后学习一下吧. 这篇文章是关于Java DTO的,选 ...
- JAVA学习第五十九课 — 网络编程概述
网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...
随机推荐
- linux 内存查看方法:meminfo\maps\smaps\status 文件解析
linux 下面查看内存有多种渠道,比如通过命令 ps ,top,free 等,比如通过/proc系统,一般需要比较详细和精确地知道整机内存/某个进程内存的使用情况,最好通过/proc 系统,下面介绍 ...
- msvc交叉编译:使用vcvarsall.bat设置命令行编译环境
一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工 ...
- C++ 调节PCM音频音量大小
在用解码器解码音频数据得到PCM音频数据块之后,可以在将数据送给声卡播放之前调节其音量大小,具体的实现函数如下: void RaiseVolume(char* buf, UINT32 size, UI ...
- ubuntu 开启PHP CURL支持
sudo apt-get install php5-curl sudo service apache2 restart
- 如何将离线的PIP安装包快速安装好
先将已安装的组件通过pip freeze require.txt导出. 将require里需要的安装包放到一个独立目录下. 然后运行命令: pip install --no-index --find- ...
- MVC5下的switchbutton
最近想提高代码生成的时候,是否选择显示样式好看些,所以想到了SwitchButton. 但是碰到个问题是,添加页面的这个初始值,需要写成true或者false 包括修改页面做个判断的话,渲染的做法也是 ...
- (1)C#工具箱-公共控件1
公共控件 InitializeComponent() 先说下InitializeComponent()这个方法,它在form1.cs里调用这个方法对控件进行初始化,控件的方法要在这个方法之后,否则会因 ...
- Codeforces Round #277.5 (Div. 2) B. BerSU Ball【贪心/双指针/每两个跳舞的人可以配对,并且他们两个的绝对值只差小于等于1,求最多匹配多少对】
B. BerSU Ball time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Codeforces 1010D Mars rover
题目大意:对于一个不完全二分图,根节点为1,叶节点值为0或1,非叶节点包含一个操作(and,or,xor,not),求改变各个叶节点的值时(即0改为1,1改为0),根节点的值是多少 解法:遍历图求各节 ...
- BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分)(线段树单点修改)
[ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 14968 Solved: 6079[Submit][Stat ...