代码下面有总结
public static void main(String[] args) throws IOException {
File f1=new File("D:\\bb\\cc.txt");
System.out.println(f1.isFile());//判断是否是文件
System.out.println(f1.isDirectory());//判断是否是文件夹
System.out.println(f1.getName());//获取文件或目录的名字
System.out.println(f1.getParent());//获取父级目录
System.out.println(f1.exists());//判断此路径是否存在
//System.out.println(f1.createNewFile());//创建文件
File file=new File("D:\\bb\\cc\\dd");
//System.out.println(file.mkdir());//创建文件夹只能创建一层
System.out.println(file.mkdirs());//创建文件夹可以创建多层
File f2=new File("src//houpu//aa.txt");
System.out.println(f2.exists());
System.out.println(f2.createNewFile());
System.out.println("绝对路径:"+f2.getAbsolutePath());
System.out.println("删除:"+f2.delete());//删除
File f3=new File("D://aa", "bb//cc");
System.out.println(f3.exists());
System.out.println(f3.mkdirs());
}
public static void main(String[] args) throws IOException {
//m1();
//m2();
//通过字节流,实现文件或图片的复制,
}
//写入
public static void m2() throws IOException{
//1.创建文件
File file=new File("src//houpu//aa.txt");
//2.创建流与文件关联
FileOutputStream fout=new FileOutputStream(file);
String s="hello world";
//将字符串转为数组
byte[] b=s.getBytes();
//3.写入
fout.write(b);
//4.关闭流,释放资源
fout.close();
}
//读取
public static void m1() throws IOException{
//创建要读取的文件
File file=new File("d:\\aa.txt");
//创建流与文件关联
FileInputStream fin=new FileInputStream(file);
//创建传输通道
byte[] b=new byte[1024];
int len=0;
//开始读取 先读取值,赋值给变量len,判断是!=-1
while((len=fin.read(b))!=-1){
//转换为字符串
String str=new String(b,0,len);
System.out.println(str);
}
//关闭流,释放资源
fin.close();
}
//将d盘中的a.gif图片复制到d:\\aa文件夹下
public static void main(String[] args) {
//创建文件
File f1=new File("D:\\a.gif");//源文件
File f2=new File("D:\\aa\\a.gif");//目的文件
FileInputStream fin=null;
FileOutputStream fout=null;
try {
//创建输入流与源文件关联
fin=new FileInputStream(f1);
//创建输出流与目的文件关联
fout=new FileOutputStream(f2);
//创建传输通道
byte[] b=new byte[1024];
//读写
int len=0;
while((len=fin.read(b))!=-1){
//边读边写
fout.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭流,释放资源(先开后关)
if(fout!=null){
try {
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fin!=null){
try {
fin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws IOException {
long start=System.currentTimeMillis();//获取当前的毫秒数
File file1=new File("src//houpu//aa.txt");//源文件
File file2=new File("C:\\Documents and Settings\\Administrator\\桌面\\案例\\aa.txt");//目的文件
//1.创建流与文件关联
FileReader fr=new FileReader(file1);
FileWriter fw=new FileWriter(file2);
//2.创建传输通道
char[] c=new char[1024];
int len=0;
//3.选择读写方式
while((len=fr.read(c))!=-1){
//转为字符串
String s=new String(c, 0, len);
//写入
fw.write(s);
//刷新
fw.flush();
}
//4.关闭流
fw.close();
fr.close();
long end=System.currentTimeMillis();
System.out.println(end-start);
}
public static void main(String[] args) throws IOException {
//创建文件
File file1=new File("src//houpu//aa.txt");//源文件
File file2=new File("aa.txt");//目的文件
//创建流与文件关联
FileReader fr=new FileReader(file1);//与源文件关联
FileWriter fw=new FileWriter(file2);//与目的文件关联
//创建缓冲流与流关联
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
String s=null;
//选择读写方式
while((s=br.readLine())!=null){
//边读边写
bw.write(s);
bw.newLine();//换行符
//刷新
bw.flush();
}
//关闭流
bw.close();
br.close();
}
总结:
I/O流
File类:
分类:
根据传输方向:
输入流 InputStream
输出流 OutputStream
根据传输类型:
字节流
字节输入流 FileInputStream
字节输出流 FileOutputStream
与文件关联
字符流
字符输入流 FileReader
字符输出流 FileWriter
与文件关联
缓冲流
缓冲输入流 BufferedReader
缓冲输出流 BufferedWriter
与流关联
步骤:
1.创建流与文件关联
2.创建传输通道
3.选择读写方式
4.关闭流,释放资源 (.close())
注意:除了字节输出流不用刷新,其余的输出流都需要刷新(.flush())
作业:
1.使用字节流实现图片的复制
2.使用缓冲流,复制 总结.txt 文件,并给每一行加上行号
3.将 总结.txt 文件中的内容分类
字母保存到 字母.txt 文件中
数字保存到 数字.txt 文件中
其他字符保存到 其他.txt 文件中