目录
IO流概述和分类
编辑FileWriter写数据
FileWriter写数据的方法
FileWriter写数据常见问题
FileReader读数据
–文件复制,上传文件和下载文件
–输出流——FileWriter
–输入流——FileReader
图式详解:
输入流:读取文本内容,用显示器显示出来,利用,利用FileWriter来操作。
输出流:想要更新文本内容,往里边加一些内容,利用FileReader来操作。
–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()以后,不可以再写内容了。
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();}
}
思考?????
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); //表示追加输入,默认是falsefor(int x=0; x<10; x++) {fw.write("hello world"+x);fw.write("\r\n");}//关闭文件fw.close();}
}
–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 != -1while((len=fr.read(chs))!=-1) {//System.out.println(new String(chs,0,len));System.out.print(new String(chs,0,len));}//释放数据fr.close();}
}