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模型的基本概念要了 ...
随机推荐
- POCO库中文编程参考指南(3)Poco::Net::Socket
POCO库中文编程参考指南(3)Poco::Net::Socket 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.c ...
- Linux安转scala
1. 创建目录 > mkdir /opt/scala > cd /opt/scala 2. 下载scala压缩包到上述目录 scala-2.12.6.tgz 3. 解压缩.建立软连接 ...
- Ubuntu角色登录答疑
1.su 命令验证出错: $ su - rootPassword: su: Authentication failureSorry. 这时候输入 $ sudo passwd rootEnter new ...
- HDU 6298.Maximum Multiple-数学思维题(脑子是个好东西,可惜我没有) (2018 Multi-University Training Contest 1 1001)
暑假杭电多校第一场,这一场是贪心场,很多贪心的题目,但是自己太菜,姿势挫死了,把自己都写吐了... 2018 Multi-University Training Contest 1 HDU6298.M ...
- #417 Div2 E (树上阶梯博弈)
#417 Div2 E 题意 给出一颗苹果树,设定所有叶子节点的深度全是奇数或偶数,并且包括根在内的所有节点上都有若干个苹果. 两人进行游戏,每回合每个人可以做下列两种操作中的一种: 每个人可以吃掉某 ...
- Frequency
题目描述 Snuke loves constructing integer sequences. There are N piles of stones, numbered 1 through N. ...
- Codeforces 908 D New Year and Arbitrary Arrangement
Discription You are given three integers k, pa and pb. You will construct a sequence with the follow ...
- Android Studio+WebApi(一)属于我们自己的App
AndroidStudio(以后都简称AS),作为google的亲儿子,终于出了个像样的android ide,再也不用在eclipse中又是Adt,又是这又是那的,一大堆的集成了.废话不多说,这个系 ...
- Mycat查询时出现:Error Code: 1064. can't find any valid datanode
说明:这个错误是查询时条件字段超过了范围导致的. 解释: 为什么会出现范围问题? 一般在MySQL查询时不会因为字段的值超过了范围而导致的,但是在Mycat中却不是这样认为的,Mycat是由于采用的分 ...
- Windows查看所有的端口及端口对应的程序
步骤一.Windows查看所有的端口 点击电脑左下角的开始,然后选择运行选项,接着我们在弹出的窗口中,输入[cmd]命令,进行命令提示符.然后我们在窗口中输入[netstat -ano]按下回车,即会 ...