IO概述及分类
IO流用来处理设备之间的数据传输, Java对数据的操作是通过流的方式,Java用于操作流的类都在IO包中。
流按流向分为两种:输入流,输出流
IO流:可以把数据存储到文件中,也可以从文件中读取数据。
常见应用:1.文件复制
2.上传文件(微信图片,qq空间图片)
3.下载文件(迅雷);
读数据是输入流,写数据是输出流。
FileWriter类使用
FileWriter向文件中写数据操作步骤:
a:使用FileWriter流关联文件
b:利用FileWriter的写方法写数据
c:利用FileWriter的刷新方法将数据从内存刷到硬盘上
d:利用FileWriter的关流方法将释放占用的系统底层资源
FileWriter方法(输出流):
构造方法:FileWriter(String fileName) 传入一个文件的路径
成员方法:void write(String str) 向文件中写str
void flush() 将内存中的数据刷新到文件中
void close() 关流释放系统底层资源
相对路径:相对当前项目而言的,在项目的根目录下(a.txt),绝对路径:以盘符开始的路径
close()和flush()方法的区别:
* flush():刷新缓冲区。流对象还可以继续使用。
* close():先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
FileWriter其它写方法:
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):写一个字符数组的一部分数据
FileWriter fw = new FileWriter("b.text");
fw.write("abcd");
fw.write("abcdef",1,3);
char[] ch={'a','s','d','w'};
fw.write(ch);
fw.write(ch,1,2);
fw.flush();
fw.close();
FileWriter写入换行以及向文本末尾追加
\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
fw.write("abcd");
fw.append("vfhy");
FileReader类使用(输入流)
FileReader读数据一次读取一个字符
输入流读文件的步骤:
* A:创建输入流对象
*B:调用输入流对象的读数据方法
* C:释放资源
package chapter01;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class IO1 {
public static void main(String[]args) throws IOException {
/*FileReader fr=new FileReader( "Io.txt");//创建输入流对象
//int read():一次读取一个字符
int ch;
while((ch=fr.read())!= -1)//一次读取一个字符
System.out.print((char)ch);
fr.close();*/
/*
FileReader fr=new FileReader("Io.txt");
char[]ch=new char[5];
int len;
// len=fr.read(ch);
// System.out.println(len);
// System.out.println(new String(ch));
while((len=fr.read(ch))!=-1){//一次读取一个字符数组
System.out.println(new String(ch,0,len));
}
fr.close();*/
/* //利用FileReader和FileWriter完成文件复制
FileReader fr=new FileReader("DuanDian.java");
FileWriter fw=new FileWriter("Type.java");
char[]ch=new char[1024];
int len;
while((len=fr.read(ch))!=-1){
fw.write(ch,0,len);
}
fr.close();
fw.close();*/
}
}