day34-IO流01

打印 上一主题 下一主题

主题 669|帖子 669|积分 2007

IO流01

1.文件基础知识

什么是文件?
文件,我们并不陌生。文件是保存数据的地方。比如大家经常使用的word文档,txt文件,excel文件等,都是文件。它既可以保存一张图片,也可以保存声音、视频……

  • 文件流
    文件在程序中是以流的形式来操作的:

流:数据在数据源(文件)和程序(内存)之间经历的路径
输入流:数据从数据源(文件)到程序(内存)之间的路径
输出流:数据从程序(内存)到数据源(文件)之间的路径
2.常用的文件操作

2.1创建文件


  • 创建文件对象相关构造器和方法
    相关方法:
    1. new File(String pathname)//根据路径构建一个File对象
    2. new File(File patent,String child)//根据父目录文件+子路径构建
    3. new File(String parent,String child)//根据父目录+子路径构建
    复制代码
例子:应用案例演示:FileCreate
  1. package li.io.file;
  2. import org.junit.jupiter.api.Test;
  3. import java.io.File;
  4. import java.io.IOException;
  5. //演示创建文件
  6. public class FileCreate {
  7.     public static void main(String[] args) {
  8.         
  9.     }
  10.     //方式一 new File(String pathname)//根据路径构建一个File对象
  11.     @Test
  12.     public void creat01() {
  13.         String filePath = "d:\\news1.txt";
  14.         File file = new File(filePath);//在内存中创建一个File对象
  15.         try {
  16.             file.createNewFile();//创建文件
  17.             System.out.println("文件创建成功");
  18.         } catch (IOException e) {
  19.             e.printStackTrace();
  20.         }
  21.     }
  22.     //方式二 new File(File patent,String child)//根据父目录文件+子路径构建
  23.     //例如:d:\\news.txt,父目录文件就是 d:\\
  24.     @Test
  25.     public void creat02() {
  26.         File parenFile = new File("d:\");
  27.         String fileName = "news2.txt";
  28.         //这里的file对象,在java程序中只是一个java对象而已
  29.         //只有执行了createNewFile方法,才会真正地在磁盘创建文件
  30.         File file = new File(parenFile, fileName);
  31.         try {
  32.             file.createNewFile();//创建文件
  33.             System.out.println("创建成功~");
  34.         } catch (IOException e) {
  35.             e.printStackTrace();
  36.         }
  37.     }
  38.     //方式三 new File(String parent,String child)//根据父目录+子路径构建
  39.     @Test
  40.     public void creat03() {
  41.         String parentPath = "d:\";  //这里的两个 \\,其中有一个是转义符号,或者直接用 d:/
  42.         String filePath = "news3.txt";
  43.         File file = new File(parentPath, filePath);
  44.         try {
  45.             file.createNewFile();
  46.             System.out.println("创建文件成功");
  47.         } catch (IOException e) {
  48.             e.printStackTrace();
  49.         }
  50.     }
  51. }
复制代码
2.2获取文件的相关信息


  • getName()
  • getAbsolutePath()
  • getParent()
  • length()
  • exists()
  • isFile()
  • isDirectory()
例子:
  1. package li.io.file;
  2. import org.junit.jupiter.api.Test;
  3. import java.io.File;
  4. public class FileInformation {
  5.     public static void main(String[] args) {
  6.     }
  7.     //获取文件的信息
  8.     @Test
  9.     public void info() {
  10.         //先创建文件对象
  11.         File file = new File("d:\\news1.txt");
  12.         //调用相应方法,得到对应信息
  13.         //文件名字-getName()
  14.         System.out.println("文件名字="+file.getName());//文件名字=news1.txt
  15.         //文件的绝对路径-getAbsolutePath()
  16.         System.out.println("文件的绝对路径="+file.getAbsolutePath());//文件的绝对路径=d:\news1.txt
  17.         //文件的父级目录-getParentFile()
  18.         System.out.println("文件的父级目录="+file.getParentFile());//文件的父级目录=d:\
  19.         //文件的大小(字节)-length()
  20.         System.out.println("文件的大小(字节)="+file.length());//文件的大小(字节)=12 Hello World!
  21.         
  22.         //文件是否存在-exists()
  23.         System.out.println("文件是否存在="+file.exists());//文件是否存在=true
  24.         
  25.         //是否为文件-isFile()
  26.         System.out.println("是否为文件="+file.isFile());//是否为文件=true
  27.         //是否为目录-isDirectory()
  28.         System.out.println("是否为目录="+file.isDirectory());//是否为目录=false
  29.     }
  30. }
复制代码
2.3目录的操作和文件删除


  • mkdir():创建一级目录
  • mkdirs():创建多级目录
  • delete():删除空目录或者文件
例子:
  1. package li.io.file;
  2. import org.junit.jupiter.api.Test;
  3. import java.io.File;
  4. public class Directory_ {
  5.     public static void main(String[] args) {
  6.     }
  7.     //判断 d:\\news1.txt是否存在,如果存在就删除
  8.     @Test
  9.     public void m1() {
  10.         String filePath = "d:\\news1.txt";
  11.         File file = new File(filePath);
  12.         if (file.exists()) {
  13.             if (file.delete()) {
  14.                 System.out.println(filePath + "删除成功");
  15.             } else {
  16.                 System.out.println("删除失败...");
  17.             }
  18.         } else {
  19.             System.out.println("该文件不存在...");
  20.         }
  21.     }
  22.     //判断 d:\\demo02 是否存在,存在就删除,否则就提示不存在
  23.     //这里我们需要体会到,在java中,目录也被当做文件
  24.     @Test
  25.     public void m2() {
  26.         String filePath = "d:\\demo02";
  27.         File file = new File(filePath);
  28.         if (file.exists()) {
  29.             if (file.delete()) {
  30.                 System.out.println(filePath + "删除成功");//d:\demo02删除成功(先在d盘下创建一个名为 demo02的目录)
  31.             } else {
  32.                 System.out.println("删除失败...");
  33.             }
  34.         } else {
  35.             System.out.println("该目录不存在...");
  36.         }
  37.     }
  38.     //判断d:\\demo\\a\\b\\c目录是否存在,如果存在就提示已经存在,否则创建
  39.     @Test
  40.     public void m3() {
  41.         String directoryPath = "d:\\demo\\a\\b\\c";
  42.         File file = new File(directoryPath);
  43.         if (file.exists()) {
  44.             System.out.println("该目录已经存在");
  45.         } else {
  46.             if (file.mkdirs()) {//多级目录使用 mkdirs方法,一级目录使用 mkdir
  47.                 System.out.println(directoryPath + "创建成功...");
  48.             } else {
  49.                 System.out.println("创建失败...");
  50.             }
  51.         }
  52.     }
  53. }
复制代码
3.IO流原理及流的分类

3.1Java IO流原理


  • I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等
  • Java程序中,对于数据的输入/输出操作以”流(Stream)“的方式进行
  • java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据
  • 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
  • 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
3.2流的分类


  • 按操作数据单位不同分为:字节流(8bit)、字符流(按字符)
    字节流适用于二进制文件,字符流适用于文本文件

  • 按数据流的流向不同分为:输入流、输出流
  • 按流的角色不同分为:节点流、处理流(也叫包装流)
抽象基类字节流字符流输入流InputStreamReader输出流OutputStreamWriter
1)Java的IO流共涉及到40 多个类,实际上非常规则,都是从如上4个抽象基类派生的
InputStream、OutputStream、Reader、Writer都是抽象类,在使用的时候要去创建它们的实现子类
2)由这四个类派生出来的子类名称都是以其父类名作为子类名后缀
4.常用的类

InputStream抽象类是所有类字节输入流的超类
InputStream常用的子类:

  • FileInputStream:文件输入流
  • BufferedInputStream:缓冲字节输入流
  • ObjectInputStream:对象字节输入流
4.1FileInputStream


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表