引入包
import java.io.*;
IO相关
输入输出流
字节字符流
文件相关
File类
创建File对象
File(Stirng filename)
File(String directoryPath,String filename)
File(Stirng dir,String filename)
创建文件夹
File dir = new File("C:/myletter");
dir.mkdir();//建立一级文件夹
mkdirs()//多级
创建文件
File file = new File("c:\\myletter","letter.txt");
列出目录中的文件
String[] list()
File[] listFiles()
参数为(FilenameFilter obj)时候,返回指定类型的所有文件
访问文件名
getName()
getPath()
getAbsoluteFile()
getAbsolutePath()
getParent()
文件检测
exists()
删除
delete()
问题
把file1.txt的文件拷贝到file2.txt
文件字节流
抽象类
InputStream
OutPutStream
文件读写
FileInputStream
FileOutputStream
创建FileInputStream对象
FileInputStream(String name);
FileInputStream(File file);
读
int read()//读取一个数据字节
int read(byte b[])//返回读取的字节个数
int read(byte b[],int off,int len)
创建FileOutputStream对象
FileOutputStream(String name)
FileOutputStream(File file)
写文件
void write(byte[]);
void write(byte b[],int off,int len)
关闭
close()
package test;
import java.io.*;
import java.util.Scanner;
public class Test {
public static void main(String []args) throws Exception{
File dir = new File("D:/temp");
dir.mkdir();
File file = new File("D:\\temp","dt.txt");
//输出到文件
FileOutputStream fos = new FileOutputStream(file);
// byte[] b= new byte[1024];
// Scanner inn = new Scanner(System.in);
// String s = inn.nextLine();
// b = s.getBytes();
// fos.write(b);
char c;
while((c=(char)System.in.read())!='#') {
fos.write(c);
}
fos.close();
//输入回来
}
}
文件字符流
文件读写
FileReader(String filename)
FileReader(File file)
FileWriter(String filename)
FileReader(File file)
缓冲流
BufferedReader
BufferedWriter
readLine()//读取一行
write(Sintr s,int off,int len)
newLine()//写入一个回行符
结合读写文件
读文件
1.定义文件
File file = new File("D:/temp","dt.txt");
2.文件字符流
FileReader fr = new FileReader(file);
3.缓冲流包装
BufferedReader bfr = new BufferedReader(fr);
4.读
while(line!=null) {
System.out.println(line);
line = bfr.readLine();
}
5.关闭资源
bfr.close();
fr.close();
package test;
import java.io.*;
import java.util.Scanner;
public class test2 {
public static void main(String []args) throws Exception{
//定义文件
File file = new File("D:/temp","dt.txt");
FileReader fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
String line = bfr.readLine();
while(line!=null) {
System.out.println(line);
line = bfr.readLine();
}
bfr.close();
fr.close();
}
}
写文件
package test;
import java.io.*;
import java.util.Scanner;
public class test3 {
public static void main(String []args) throws Exception{
File file = new File("D:/temp","dt.txt");
FileWriter fw = new FileWriter(file);
BufferedWriter bfw = new BufferedWriter(fw);
Scanner in = new Scanner(System.in);
String s = in.nextLine();
// System.out.println(s);
while(s!="exit") {
bfw.write(s);
bfw.newLine();
s = in.nextLine();
// System.out.println(s);
}
bfw.flush();
bfw.close();
fw.close();
}
}
对象流
package 文件Object;
import java.io.*;
public class Circle implements Serializable{
//对象序列化,实现序列化接口!!!
double r;
Circle(double r){
this.r = r;
}
double getArea() {
return 3.14*r*r;
}
}
package 文件Object;
import java.io.*;
public class test {
public static void main(String []args) throws Exception{
//输入
File file = new File("D:\\JavaEclipse","objects.txt");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//写入文件
Circle r = new Circle(2);
oos.writeObject(r);
oos.close();
fos.close();
//输出
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
//从文件读出来
Circle r2 = (Circle)ois.readObject();
System.out.println("面积"+r2.getArea());
ois.close();
fis.close();
}
}
多个对象
package 文件Object;
import java.io.*;
public class test {
public static void main(String []args) throws Exception{
//输入
File file = new File("D:\\JavaEclipse","objects.txt");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//写入文件
Circle []a = new Circle[3];
a[0] = new Circle(6);
a[1] = new Circle(4);
a[2] = new Circle(9);
for(int i = 0;i < 3;i++)
oos.writeObject(a[i]);
oos.close();
fos.close();
//输出
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
//从文件读出来
for(int i = 0;i < 3;i++)
{
Circle r2 = (Circle)ois.readObject();
System.out.print("半径:"+r2.r+" 面积");
System.out.printf("%.2f\n", r2.getArea());
}
ois.close();
fis.close();
}
}