java期末I/O流最全复习
import java.io.File;
public class e1 {
public static void main(String[] args) {
File f=new File("F:\\IDEA\\学生成绩.txt");
System.out.println(f);
}
}
File类常见方法
import java.io.File;
public class e2 {
public static void main(String[] args) {
File file=new File("F:\\IDEA\\学生成绩.txt");
System.out.println("文件是否存在:"+file.exists());
System.out.println("文件名:"+file.getName());
System.out.println("文件大小:"+file.length()+"bytes");
System.out.println("文件相对路径:"+file.getPath());
System.out.println("文件绝对路径:"+file.getAbsolutePath());
System.out.println("文件的父级对象是否是文件:"+file.isFile());
System.out.println("文件的删除是否成功:"+file.delete());
}
}
遍历目录下的文件
(1)遍历指定目录下的文件
(2)遍历指定目录下指定扩展名的文件
(3)遍历包含子目录中的文件在内的所有文件
import java.io.File;
public class e3 {
public static void main(String[] args) {
//创建file文件
File file=new File("F:\\IDEA");
if(file.isDirectory()){//判断目录下所有文件的文件名
String[] names=file.list();//获取目录下所有文件的文件名
for(String name:names){
System.out.println(name);//输出文件呢名
}
}
}
}
遍历指定目录下指定扩展名的文件,File类提供了一个重载list()方法,该方法接收一个FilenameFilter类型的参数。FilenameFilter是一个文件过滤器,其中定义了一个accept()的 抽象方法,对file的所有子目录或文件进行迭代
import java.io.File;
import java.io.FilenameFilter;
public class e4 {
public static void main(String[] args) {
//创建file对象
File file=new File("F:\\IDEA");
//创建问加你过滤器对象
FilenameFilter filter=new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File currFile=new File(dir,name);
if(currFile.isFile()&&name.endsWith("java")){
return true;
}else{
return false;
}
}
};
if(file.exists()){
String[] lists= file.list(filter);
for(String name:lists){
System.out.println(name);
}
}
}
}
字节流
字节流是程序中最常用的流,根据数据的传输方向分为字节输入流和字节输出流,在I/O流操作结束之后,应该调用close()方法关闭I/O流,从而释放I/O流所占用的系统资源
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class e5 {
public static void main(String[] args) throws IOException {
FileInputStream in=new FileInputStream("F:\\IDEA\\1.txt");
int b=0;
while(true){
b=in.read();
if(b==-1){
break;
}
System.out.println(b);
}
in.close();
}
}
字节流写入文件
import java.io.*;
public class e6 {
public static void main(String[] args) throws IOException {
OutputStream out=new FileOutputStream("example.txt");
String str="祝你天天开心呀宝";
byte[] b=str.getBytes();
for(int i=0;i<b.length;i++){
out.write(b[i]);
}
out.close();
}
}
文件的复制
import java.io.*;
public class e7 {
public static void main(String[] args) throws Exception {
InputStream in=new FileInputStream("F:\\IDEA\\1.txt");
OutputStream out=new FileOutputStream("F:\\IDEA\\2.txt");
byte[] buff=new byte[1024];
int len;
long begintime=System.currentTimeMillis();
while ((len=in.read(buff))!=-1){
out.write(buff,0,len);
}
long endtime=System.currentTimeMillis();
System.out.println("复制文件所消耗的时间是:"+(endtime-begintime)+"ms");
in.close();
out.close();
}
}
字符流
字符流也有两个顶级的父类,分别是Reader类和Writer类。其中,Reader类是字符输入流,用于从某个源设备中读取字符,Writer类是字符输出类,用于向某个目标设备写入字符
import java.io.*;
public class e8 {
public static void main(String[] args) throws Exception {
//创建一个FileReader对象,用来读取文件中的字符
FileReader reader=new FileReader("example.txt");
int ch;
while((ch=reader.read())!=-1){
System.out.print((char)ch);
}
reader.close();
}
}
import java.io.*;
public class e9 {
public static void main(String[] args) throws Exception {
//创建字节输入流in,并指定文件为src.txt
FileInputStream in=new FileInputStream("src.txt");
//将字节输入流in转换成字符输入流
InputStreamReader isr=new InputStreamReader(in);
//创建字节输出流out,并指定目标文件为des.txt
FileOutputStream out=new FileOutputStream("des.txt");
//将字节输出流out转换成字符输出流osw
OutputStreamWriter osw=new OutputStreamWriter(out);
int ch;
while((ch=isr.read())!=-1){
osw.write(ch);
}
isr.close();
osw.close();
}
}