文件流,就是程序和文件打交道,此时的文件是纯文本文件。
分为四个:
- FileInputStream
- FileOutputStream
- FileReader
FileWriter
代码演示一下:
import java.io.*;
public class FilleStreamDemo {
public static void main(String[] args) throws IOException {
File file=new File("a.txt");
//1.演FileOutputStream-Writer
OutputStream out=new FileOutputStream(file,true);
//
String s="abc";
//将字符串转换为字符数组写入文件中
byte[] b=s.getBytes();
out.write(b);
out.close();
//2.演示FileInputStream-Reader
InputStream in=new FileInputStream(file);
//读取文件的信息,存储到b数组里面
in.read(b);
//输出形式为数组,【97,98,99】
System.out.println(Arrays.toString(b));
//输出形式为字符串:abc
System.out.println(new String(b));
in.close();
}
}
文件复制操作-字节流
import java.io.*;
public class FilleStreamDemo {
public static void main(String[] args) throws IOException {
File file=new File("a.txt");
File file2=new File("b.txt");
InputStream in = new FileInputStream(file);
OutputStream out = new FileOutputStream(file2, true);
byte[] b=new byte[4];//创建缓存区,存储读取的数据
int len=-1;//表示已经读取了多少个字节,如果len返回-1,表示已经读到最后
while((len=in.read(b))!=-1){
//打印出读取的数据
System.out.println(new String(b,0,len));
out.write(b,0,len);
}
in.close();
out.close();
}
}
文件复制操作-字符流
public class FileCoDemo {
public static void main(String[] args) throws Exception {
File sre=new File("java/a.txt");
File dest=new File("java/b.txt");
Reader in=new FileReader(sre);
Writer out=new FileWriter(dest);
char[] ch=new char[1024];
int len=-1;
while((len=in.read(ch))!=-1){
System.out.println(new String(ch,0,len).toString());
out.write(ch,0,len);
}
in.close();
out.close();
}
}
文件拷贝案例-拷贝指定目录下的指定类型文件到指定目录
public class FileProjectDemo {
public static void main(String[] args) throws Exception {
//文件拷贝案例-拷贝指定目录下的指定类型文件到指定目录
//创建源目录
File sreF=new File("java");
//创建目的目录
File destF=new File("text");
//获取源目录里面的指定类型文本文件
File[] fs=sreF.listFiles(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
//将以“.java”结尾的文件保存到数组fs里面
return new File(dir,name).isFile()&&name.endsWith(".java");
}
});
//迭代出每一个.java文件并复制。
for(File f:fs){
//创建读写流
InputStream in=new FileInputStream(f);
//将符合条件的文件复制到目录文件
OutputStream out = new FileOutputStream(new File(destF,f.getName()));
byte[] b=new byte[1024];
//对每一个文件里的内容进行复制
int len = -1;//表示已经读取了多少个字节,如果len返回-1,表示已经读到最后
while ((len = in.read(b)) != -1) {
//将缓存区b中的内容写入到指定的文件对象里
out.write(b, 0, len);
}
//关闭资源
in.close();
out.close();
}
}
}