IO流-基础
//创建输出流对象
FileWriter fw = new FileWriter("d:\\a.txt");
/*
* 创建输出流对象做了哪些事情:
* A:调用系统资源创建了一个文件
* B:创建输出流对象
* C:把输出流对象指向文件
*/
//调用输出流对象的写数据的方法
//写一个字符串数据
fw.write("IO流你好");
//数据没有直接写到文件,其实是写到了内存缓冲区
fw.flush();
//释放资源
//通知系统释放和该文件相关的资源
fw.close();
* close()和flush()方法的区别:
* flush():刷新缓冲区。流对象还可以继续使用。
* close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
* 相对路径:相对当前项目而言的,在项目的根目录下(a.txt)
* void write(String str):写一个字符串数据
* void write(String str,int index,int len):写一个字符串中的一部分数据
* void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
* void write(char[] chs):写一个字符数组数据
* void write(char[] chs,int index,int len):写一个字符数组的一部分数据
* 如何实现数据的换行?
* \n可以实现换行,但是windows系统自带的记事本打开并没有换行,这是为什么呢?因为windows识别的换行不是\n,而是\r\n
* windows:\r\n
* linux:\n
* mac:\r
* 如何实现数据的追加写入?
* FileWriter(String fileName, boolean append)
FileWriter fw = new FileWriter("c.txt",true); //表示追加写入,默认是false
文件读取:
FileReader fr = new FileReader("FileWriterDemo.java");
//调用输入流对象的读数据方法
//int read():一次读取一个字符
//通过测试,我们知道,如果读取数据的返回值是-1的时候,就说明没有数据了,这也是我们循环的结束条件
int ch;
while((ch=fr.read())!=-1) {
System.out.print((char)ch);
}
//释放资源
fr.close();
复制文件:
//创建输入流对象
FileReader fr = new FileReader("FileWriterDemo.java");
//创建输出流对象
FileWriter fw = new FileWriter("Copy.java"); //读写数据
int ch;
while((ch=fr.read())!=-1) {
fw.write(ch);
} //释放资源
fw.close();
fr.close();
一次读取一个字符串:
FileReader fr = new FileReader("FileWriterDemo.java");
//int read(char[] cbuf):一次读取一个字符数组的数据,返回的是实际读取的字符个数
//通过测试,我们知道,如果实际读取长度是-1的时候,说明没有数据了
char[] chs = new char[1024]; //这里可以是1024及其整数倍
int len;
while((len=fr.read(chs))!=-1) {
//System.out.println(new String(chs,0,len));
System.out.print(new String(chs,0,len));
}
//释放资源
fr.close();
FilreReader读取数据的两种方式图解:

一次读写一个字符数组复制文本文件:
//创建输入流对象
FileReader fr = new FileReader("FileWriterDemo.java");
//创建输出流对象
FileWriter fw = new FileWriter("Copy.java"); //读写数据
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
} //释放资源
fw.close();
fr.close();
* BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
* BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
//创建输出缓冲流对象
/*
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
bw.write("hello");
//bw.flush();
bw.close();
*/ //创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java")); //一次读写一个字符
int ch;
while((ch=br.read())!=-1){
System.out.print((char)ch);
} //一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
} //释放资源
br.close();
缓冲流复制文本文件的两种方式:
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java")); //读写数据
/*
//一次读写一个字符
int ch;
while((ch=br.read())!=-1) {
bw.write(ch);
}
*/ //一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
} //释放资源
bw.close();
br.close();
* 缓冲流的特殊功能:
* BufferedWriter
* void newLine():写一个换行符,这个换行符由系统决定
* BufferedReader
* String readLine():一次读取一行数据,但是不读取换行符
BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt"));
for(int x=0; x<10; x++) {
bw.write("hello"+x);
//bw.write("\r\n");
bw.newLine();
bw.flush();
}
bw.close();
BufferedReader br = new BufferedReader(new FileReader("br.txt"));
String line;
//1:br.readLine()
//2:line=br.readLine()
//3:line != null
while((line=br.readLine())!=null) {
System.out.println(line);
}
br.close();
缓冲流特殊功能复制文本文件:
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java")); //读写数据
String line;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
} //释放资源
bw.close();
br.close();
复制文本文件的5种方式
A:利用基本流一次读写一个字符
B:利用基本流一次读写一个字符数组
C:利用缓冲流一次读写一个字符
D:利用缓冲流一次读写一个字符数组
E:利用缓冲流的特有方法一次读写一个字符串
//缓冲流一次读写一个字符串
public static void method5(String srcFileName,String destFileName) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName)); //一次读写一个字符串
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
} //释放资源
bw.close();
br.close();
} //缓冲流一次读写一个字符数组
public static void method4(String srcFileName,String destFileName) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName)); //一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
} //释放资源
bw.close();
br.close();
} //缓冲流一次读写一个字符
public static void method3(String srcFileName,String destFileName) throws IOException {
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader(srcFileName));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName)); //一次读写一个字符
int ch;
while((ch=br.read())!=-1) {
bw.write(ch);
} //释放资源
bw.close();
br.close();
} //基本流一次读写一个字符数组
public static void method2(String srcFileName,String destFileName) throws IOException {
//创建输入流对象
FileReader fr = new FileReader(srcFileName);
//创建输出流对象
FileWriter fw = new FileWriter(destFileName); //一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
} //释放资源
fw.close();
fr.close();
} //基本流一次读写一个字符
public static void method1(String srcFileName,String destFileName) throws IOException {
//创建输入流对象
FileReader fr = new FileReader(srcFileName);
//创建输出流对象
FileWriter fw = new FileWriter(destFileName); //一次读写一个字符
int ch;
while((ch=fr.read())!=-1) {
fw.write(ch);
} //释放资源
fw.close();
fr.close();
}
}
IO流-基础的更多相关文章
- Java 中级IO流基础及主要API编程
1. IO流基础知识,流 是字节从源到目的地的运行的轨迹,次序是有意义的, 字节会按照次序进行传递, 比如Hello World 在下图中的传递的轨迹.该图形象的解释了IO中流的概念.流中全是字节.2 ...
- 乐字节Java之file、IO流基础知识和操作步骤
嗨喽,小乐又来了,今天要给大家送上的技术文章是Java重点知识-IO流. 先来看看IO流的思维导图吧. 一. File 在Java中,Everything is Object!所以在文件中,也不例外! ...
- Java IO流基础总结
前言 好久不用Java的IO流,把好多的基础知识都忘了,昨天在写一段代码,发现好多细节都忘了.那天在组织组内代码评审的时候,发现有人在乱用IO流相关的类,所以还是写篇文章,把这个知识点总结一下. IO ...
- IO流基础
IO流,也称为数据流,用于处理设备之间的数据传输. JAVA对数据的操作就是通过流的方式,而流分为两种:字符流,字节流 字符流: 可以内部制定码表,处理文字很方便,字符流里的基类是Reader,Wri ...
- IO流基础,创建File对象与方法是用
1.io流主要用途读取本地文件或服务器文件,进行本地或者服务器开呗工作 构造函数 绝对路径够构造方法: File f = new File("D:\\test\\a.txt&quo ...
- Java之IO流基础流对象
输入流和输出流是相对于内存设备而言 即将外设中的数据读取到内存中就是输入 将内存中的数据写入到外设中就是输出 字符流的由来: 其实就是:字节流读取文字字节数据后,不直接操作而是先查指 ...
- IO流基础加强
字节流对象:InputStream,OutputStream 缓冲字节流对象:BufferedInputStream , BufferedOutputStream 用法和字符流对象一样,但也有区别, ...
- java io 流基础
- Java中的IO流之输入流|乐字节
亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了.上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输出流. 点击回顾上一篇:乐字节Java之file.IO流基础知识和操作步骤 一. 输入 ...
随机推荐
- ROSETTA使用技巧随笔--Full Atom Representation和Centroid Representation
Full Atom Representation vs Centroid Representation Full Atom Representation即全原子标识,氨基酸残基的所有相关原子,均原封不 ...
- cocos2d-x JS 开启远程代码调试
为了方便服务端与测试部门的工作需要,把客户端的写的程序可以在其他电脑上运行,方便他人工作与测试. 下面是cocos2d-x JS WebStorm 的设置方法.
- 海量交通大数据应用平台MTDAP_nchang的经验记录
WRONGTYPE Operation against a key holding the wrong kind of value 根本的就是redis同一个key的value值前后类型不一致,比如最 ...
- WebSocket.之.基础入门-后端响应消息
WebSocket.之.基础入门-后端响应消息 在<WebSocket.之.基础入门-前端发送消息>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 inde ...
- java 3大特性
1. 封装 : 定义: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口. 作用: 封装通过对属性增加修饰符来控制数据的访问权限,定义数据的访问接口,增加了数据的隐秘性和安全性. 2.继承 ...
- 添加Google搜索
给自己的网站加一个搜索功能很简单,代码如下: 欢迎访问我的博客:http://67566894.iteye.com/ <form action="http://www.google.c ...
- poj2987 求最大权闭合回路
建图差不多和以前做的差不多,就是最后询问这个闭合子图有多少个的时候,只要输出这个图的S集合,就是进行dfs能遍历到的点一定在S集合中,不能遍历到的点在T集合中 #include <iostrea ...
- 键值对Dictionary、KeyValuePair、Hashtable 简单使用。
KeyValuePair是单个的键值对对象.KeyValuePair可用于接收combox选定的值. 例如:KeyValuePair<string, object> par = (KeyV ...
- tcp_协议基础
具体7层 数据格式 功能与连接方式 典型设备 应用层 Application 数据Data 网络服务与使用者应用程序间的一个接口 终端设备(PC.手机.平板等) 表示层 Presentation ...
- flask模板结构组织(局部模板、宏、模板继承)
模板结构组织 除了使用函数.过滤器等工具控制模板的输出外,jinja2还提供了一些工具来在宏观上组织模板内容. 局部模板 在Web程序中,我们通常会为每一类页面编写一个独立的模板.比如主页模板.用户资 ...