JAVAIO流

目录

1.File类

(1)File类简介

(2)File对象创建

增加操作

删除操作

修改操作

查询操作

2.完成文件内容的复制

3.字节流

(1)字节输出流--OutputStream

(2)字节输入流---InputStream


1.File类

(1)File类简介

File 类 就是当前系统中 文件或者文件夹的抽象表示 
    
通俗的讲  就是 使用File对象 才操作我们电脑系统中的文件或者文件夹

学习File类 其实就是学习 如果通过file对象 对系统中的文件/文件夹进行增删改查

(2)File对象创建

磁盘准备一个目录AAA。以后对文件得操作都放在该目录下

public static void main(String[] args) {
   //创建一个File对象 并指定文件得路径 \转移字符串
   File file01 = new File("D:\\AAA\\aaa.txt");
   /*
     \\目录层级 在window系统下层级分割符为\ 但是在
linux和mac系统上分割符为 /
     我们得java代码是一种跨平台得语言。 我们得开发在
window 但是我们项目得部署在linux.
     我们使我们得代码能在任意系统下来用。 我们有两种解决办
法
     (1)第一种 因为window 兼容 / 和 \
    */
   File file02 = new File("D:/AAA/bbb.txt");
   // 第二种 File.separator根据当前代码所在得系统自动获
取相应得分割符
   System.out.println(File.separator); // \因为我们
当前在window下
   File file03 = new
File("D:"+File.separator+"AAA"+File.separator+"ccc.txt
");
 }

增加操作

1 创建新的文件  2 创建新的文件夹

import java.io.IOException;

public class Test05 {
  public static void main(String[] args) throws
IOException {
    File file01 =new File("D:/AAA/aaaa.txt"); //创
建File对象
    file01.createNewFile();//创建相应得文件
    File file02 = new File("D:/AAA/bbb");
    file02.mkdir();//创建目录 make directory 单层目录
    File file03 = new File("D:/AAA/ccc/fff");
    file03.mkdirs(); //创建多层目录
    File file04 = new File("D:/AAA/eee");
    file04.createNewFile();
    //使根据你调用得方法不同 而创建不同得类型
 }
}

删除操作

 public static void main(String[] args) throws
InterruptedException {
    File file01 = new File("D:/AAA/a.txt");
    file01.delete();//删除文件
    File file02 = new File("D:/AAA/eee");
    file02.deleteOnExit(); // 当程序退出后 删除
//    Thread.sleep(5000); //休眠10秒
    File file03 = new File("D://AAA/bbb");
    file03.delete();//删除空目录
   
 }

修改操作

public static void main(String[] args) throws
IOException {
   File file=new File("D:/AAA/c.txt");
   file.createNewFile();
//    file.setReadable(false);//设置该文件得权限为不能
读
//    file.setWritable(false);//设置该文件不能写
//    file.setReadOnly();//设置只读得权限
   file.renameTo(new File("D:/AAA/d.txt"));//重命
名
 }

查询操作

public static void main(String[] args) { 1
经典题目: 用的方法的递归调用。
   File file=new File("D:/AAA/ccc/fff/a.txt");
   String name = file.getName(); //得到文件得名称
   System.out.println("name======"+name);
   String parent = file.getParent(); //得到父级路径
得名称
   System.out.println("parent===="+parent);
   String path = file.getPath(); //得到文件得路径名
称
   System.out.println("path======"+path);
   boolean f1 = file.isFile(); //判断该文件对象是否为
文件类型
   System.out.println("f1========="+f1);
   boolean f2 = file.isDirectory(); //判断该文件对象
是否为目录类型
   System.out.println("f2========="+f2);
   File file2 = new File("D:/AAA");
   String[] list = file2.list(); //列出AAA目录下所有
子文件得名称
   System.out.println(Arrays.toString(list));
   File[] files = file2.listFiles(); //列出AAA目录
下所有文件对象
   for(File f:files){
     System.out.println(f.toString());
   }
 }

经典题目: 用的方法的递归调用

显示指定目录下的所有文件。D:/AAA下所有的文件.

public static void main(String[] args) {
    showAllFiles("D:/AAA");
 }
 public static void showAllFiles(String path){
    //使用传入的路径构建文件对象

   File file=new File(path);
   //判断文件是否存在 或者文件是否为目录.
   if(!file.exists() || !file.isDirectory()){
      return;
   }
   //列出该目录下所有的文件对象。
   File[] files = file.listFiles();
   //遍历数组
   for(File f:files){
      if(f.isDirectory()){
        System.out.println(f.getPath()+" 
<Dir>");
        showAllFiles(f.getPath());//继续调用本
方法
      }else{
        System.out.println(f.getPath()+" ");
  }
 }
}

2.完成文件内容的复制

@Test
  public void test02() throws Exception{
    //1.创建一个字符输入流
    FileReader fr=new FileReader("D:/AAA/d.txt");
    //2.创建一个字符输出流
    FileWriter fw=new FileWriter("C:/AAA/f.txt");
    int c=0;//读取到字符的个数
    char[] cs=new char[10];//每次读取的内容放入该数组中
    while( (c=fr.read(cs)) !=-1 ){
      fw.write(cs,0,c);
      fw.flush(); //刷新
   }
fw.close();
    fr.close();
}

3.字节流

(1)字节输出流--OutputStream

它可以对任意文件进行操作,对文件进行输出操作。以字节为单位。 它是所
有字节输出流的父类,
FileOutputStream

@Test
  public void testOutStream() throws Exception{
    OutputStream os=new
FileOutputStream("D:/AAA/f.txt");
    String str="abcd";
    //把字符串转换为字节数组.
    byte[] bytes = str.getBytes();
    os.write(bytes);
    os.flush();
    os.close();
}

(2)字节输入流---InputStream

它可以对任意文件进行读操作 ,以字节为单位,它是所有字节输入流的父
类,子类有FileInputStream

 @Test
  public void testInputStream() throws Exception{
      InputStream  is=new
FileInputStream("D:/AAA/f.txt");
      byte [] bytes=new byte[3];
      int c=is.read(bytes); //一次读取三个字节 并把
读取的内容放入字节数组中 返回读取到字节的个数
      System.out.println(bytes+"=============>个
数:"+c);
      c=is.read(bytes); //一次读取三个字节 并把读取
的内容放入字节数组中 返回读取到字节的个数
      System.out.println(bytes+"=============>个
数:"+c);
    c=is.read(bytes); //一次读取三个字节 并把读取的内容
放入字节数组中 返回读取到字节的个数
    System.out.println(bytes+"=============>个
数:"+c);
 }
  //如果文件中内容非常大 使用循环来读取
  @Test
  public void testInputStream2() throws  Exception{
    InputStream  is=new
FileInputStream("D:/AAA/f.txt");
    byte [] bytes=new byte[300];
    int c=0; //读取到的个数
    while( (c=is.read(bytes))!=-1 ){
      //把byte数组转换为字符串
      String str=new String(bytes,0,c);
      System.out.println(str);
   }
    is.close();
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值