Field fiel =new File (“a.txt”);
FileOutputStream fos=new FileOutputStream (file);
FileInputStream fis=new FileInputStream(file);
BufferedOutputStrream bos =new BufferedOutputstream (new FileOutputStream(new File(“a.txt”)));
BufferedInputStream bis =new BufferedInputStream (new FileInputStream (new File(“a.txt”)))
OutputStreamReader osr=new OutputStreamReader ( new FileOutputStream( new File (“a.txt”) ) );
IputStreamWrite isw=new InputStreamWrite (new FileInputStream ( new File (“a.txt”) ) );
FielReader fr=new FileReader (new File(“a.txt”) );
FileWrite fw=new FileWrite ( new File(“a.txt”) );
BufferedReader br = new BufferedReader (new FileReader(“a.txt”));
BufferedWrite bw = new BufferedWrite (new FileWrite(“a.txt”));
除了用Windows 记事本打开 能读懂的数据用字符流外 其他一般用 字节流
字节流复制4种方式 字符流 5种方式 一种 readline 为特有
常用构造方法
BufferedOutputStream bos= new BufferedOutputStream (new FileOutputStream(“a.txt”))
BufferedInputStream bis= new BufferedInputStream (new FileInputStream (“a.txt”));
字符流
BufferedReader br=new BufferedReader(new FileReader(“a.txt”));
BufferedWrite bw=new BufferedWrite (new FileWrite(“a.txt”));
File file1=new File("a.txt");
File file2=new File ("b.txt");
file1.renameto(file2);
基本获取功能:
高级获取功能:
File fiel=new File("e:\\");
String [ ] name=file.list();
File file=new File ("e:\\");
File [ ] filearray=file.listfile();
例子
重写一个接口的accept方法 获取指定目录下的File数组
File file=new File ("e:\\");
File [] fileArray = file.listfiles(new FileNamefilter(){
@cvervide
public boolean accpet(File dir,String name){
return new File(dir,name).IsFile()&&name.endWith(".java");
}
});
DataInputStream DataOutputStream
就可以使用内存操作流 在内存中操作文件
BufferedReader br=new BufferedReader(new FileReader("a.txt"));
PrintWrite pw=new PrintWrite(new FileWrite("b.txt"));
String line=null;
While((line=br.readLine())!=null){
pw.println(line);
}
pw.close();
br.close();
BufferedReader br=new BufferedReader
(new InputStreamReader(System.in) );
System.out.println("helloword");
PrintStream ps=System.out;
ps.println();
BufferedWrite bw=new BufferedWrite(new OutputStreamWrite(System.out));
把数据写入一个文件后 去修改类会产生一个问题
解决问题的方法: 在类文件中 给出一个固定的序列化id值
ObjectOutputStream ObjectInputStream
1. 构造方法
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("obj.txt"));
ObjectInputStream ois=new ObjectInputStream (new FileInputStream("obj.txt"));
根据给定的文件判断是否有键 为 “lisi”的 如果有就改值为100
思路体现:
写一个程序 控制猜数字小游戏 只能玩5次
思路体现:
//先删除目录下的内容 再删除目录
public static void deleteAllFiles(File file){
System.out.println("文件夹————"+file.getName());
File[] fs = file.listFiles();
for (File f : fs) {
if (f.isDirectory()) {
//继续遍历
deleteAllFiles(f);
}else{
System.out.println("删除文件:"+f.getName());
f.delete();
}
}
//删除目录
file.delete();
}
public static void main(String[] args) {
File file = new File("E:\\a");
deleteAllFiles(file);
}
}
/*
* 将aaa.txt拷贝到bbb.txt
*
* 1.读aaa.txt
* 2.写入bbb.txt
*
*/
public class CopyDemo {
public static void main(String[] args){
//File f1 = new File("E:\\aaa.txt");
File f2 = new File("E:\\bbb.txt");
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("E:\\aaa.txt");
fw = new FileWriter(f2);
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
System.out.println("copy ok!");
} catch (FileNotFoundException e) {
System.err.println("文件不存在");
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭流资源 后开的先关闭
if (fw != null) {
try {
fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}