目录
IO流概述和分类
编辑FileWriter写数据
FileWriter写数据的方法
FileWriter写数据常见问题
FileReader读数据
IO流概述和分类
- IO流用来处理设备之间的数据传输
–文件复制,上传文件和下载文件
- IO流分类
–输出流——FileWriter
–输入流——FileReader
图式详解:
输入流:读取文本内容,用显示器显示出来,利用,利用FileWriter来操作。
输出流:想要更新文本内容,往里边加一些内容,利用FileReader来操作。
FileWriter写数据
- 构造方法
–FileWriter(String fileName)
- 成员方法
–void write(String str)
–void flush()——清缓冲
–void close()——关闭文件
package com.demo01;
import java.io.FileWriter;
import java.io.IOException;
/**
*
* @author 无限嚣张(菜菜)
* 需求:从文件中写数据
*
* FileWriter(String fileName):传递一个文件名称
*
* 输出流写数据步骤:
* A:创建输出流对象
* B:调用输出流写数据的方法
* C:释放资源
*
*/
public class FileWriterDemo {
public static void main(String[] args) throws IOException {
//创建一个文件对象
FileWriter fw = new FileWriter("c:\\zahng.txt");
/*
* 创建输出流对象做了哪些事情:
* A:调用系统资源创建一个文件
* B:创建输出流对象
* C:把输出流对象指向文件
*/
//调用输出流对象的写数据的方法
//写一个字符串数组
fw.write("IO流你好,HELLO");
//数据没有直接写到文件,其实写到了内存缓冲区
fw.flush();
//释放资源
//ͨ通知系统释放和该文件相关的资源
//关闭文件输出流
fw.close();
}
}
如果关闭以后:可以再写吗?执行fw.close()以后,不可以再写内容了。
FileWriter写数据的方法
- void write(String str):写一个字符串数据
- void write(String str,int index,int len):写一个字符串中的一部分数据
- void write(int ch):写一个字符数据
- void write(char[] chs):写一个字符数组
- void write(char[] chs,int index,int len):写一个字符数组的一部分数据
package com.demo01;
import java.io.FileWriter;
import java.io.IOException;
/*
* void write(String str):写一个字符串数据
* void write(String str,int index,int len):写一个字符串中的一部分数据
* void write(int ch):写一个字符数据
* void write(char[] chs):写一个字符数组
* void write(char[] chs,int index,int len):写一个字符数组的一部分数据
*/
public class FileWriterDemo3 {
public static void main(String[] args) throws IOException {
//创建一个文件对象
FileWriter fw = new FileWriter("c://zy.txt");
//void write(String str):写一个字符串数组
fw.write("abcde");
fw.write("\r\n");
//void write(String str,int index,int len):写一个字符串中的一部分数据
fw.write("abcde",0,5);
fw.write("\r\n");
fw.write("abcde",1,3);
fw.write("\r\n");
//void write(int ch):void write(int ch):写一个字符数据
fw.write('a');
fw.write(97);
fw.write("\r\n");
//void write(char[] chs):写一个字符数组
char[] chs = {'a','b','c','d','e'};
fw.write(chs);
fw.write("\r\n");
//void write(char[] chs,int index,int len):写一个字符数组的一部分数据
fw.write(chs,0,5);
fw.write("\r\n");
fw.write(chs,2,3);
fw.write("\r\n");
//关闭文件
fw.close();
}
}
思考?????
FileWriter写数据常见问题
1.如何实现数据的换行?
windows:\r\n
linux:\n
mac:\r
2.如何实现数据的追加写入?
FileWriter fw = new FileWriter("c.text");
package com.demo01;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo4 {
public static void main(String[] args) throws IOException {
//FileWriter fw = new FileWriter("c://c.txt");
FileWriter fw = new FileWriter("c://c.txt",true); //表示追加输入,默认是false
for(int x=0; x<10; x++) {
fw.write("hello world"+x);
fw.write("\r\n");
}
//关闭文件
fw.close();
}
}
FileReader读数据
- 构造方法
–FileReader(String fileName)
- 成员方法
–int read()
–int read(char[] cbuf)
没有参数的读取
package com.demo02;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 需求:从文件中读数据并显示到控制台
* 读数据——输入流——FileReader
*
* FileReader:
* FileReader(String fileName):传递文件名称
*
* 输入流读文件的步骤
* A:创建输入流对象
* B:调用输入流对象读数据的方法
* C:释放资源
*
* java.io.FileNotFoundException: fr.txt (系统不指定文件)
*/
public class FileReaderDemo {
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("c://zy.txt");
int ch;
while ((ch = fr.read()) != -1) {
System.out.print((char) ch);
}
//释放
fr.close();
}
}
带参数的数据读取
package com.demo02;
import java.io.FileReader;
import java.io.IOException;
/*
* 输入流读数据的步骤
* A:创建输入流对象
* B:调用输入流对象的读数据的方法
* C:释放资源
*/
public class FileReaderDemo2 {
public static void main(String[] args) throws IOException {
// 创建文件数据对象
FileReader fr = new FileReader("c://zy.txt");
char[] chs = new char[1024]; //创建数组对象
int len;
//1:fr.read(chs)
//2:len=fr.read(chs)
//3:len != -1
while((len=fr.read(chs))!=-1) {
//System.out.println(new String(chs,0,len));
System.out.print(new String(chs,0,len));
}
//释放数据
fr.close();
}
}