Bootstrap

JAVA对于文件IO操作的支持

关于IO:

  • I:input  输入

  • O:output  输出

io:操作可以针对当前的文件和网络中的输入输出;但是File只能是将数据可以作为输入直接发送

输入输出是针对参照物来说的;--参照物是程序简单的操作:比如我们要将数据导出到文件:----程序(将符合条件的)数据输出到文件中()从文件中读取数据: 输入操作;

数据-->程序--->文件file         输出操作

文件file(存在数据)-->程序-->数据   输入操作

导出数据到文件---输出流

服务器发送数据给客户端:

  • 对于服务器来说是输出操作   - 对于客户端来说是输入操作;

2.IO流的分类:

(1)方向:  输入流和输出流

(2)操作数据的单位(怎么写入写出文件)    通过字节流和字符流来书写

字节流:字节流:简而言之,是通过byte数组来具体实现的,以字节为单位byte;//字节流适用于任何文件比如音频,视频,xlsx,

字符流:(只用于读写纯文本数据)字符流:顾名思义,是通过char数组来具体实现的,以字符为单位char;

字符流的特点:

/**字符流的输出、输入操作只是纯文本数据*/

纯文本数据-->内容都是字符

//纯文本文件: .txt,.html,.xml,.properties等文件;

(3)功能角色不同节点流和处理流

3.IO流的四大抽象基类、超类、父类

就是基础的类,可以有具体继承的子类,有更多的功能和实现哈哈;

  • (1)inputStream:--字节输入流

  • (2)outputStream:--字节输出流

  • (3)Reader:--字符输入流

  • (4)Writer:--字符输出流

只要是导出,输出文件;都属于输出流(将数据通过程序转化为具体格式的数据文件)文件的IO流 - (1)FileinputStream:--文件字节输入流

- (2)FileoutputStream:--文件字节输出流

- (3)FileReader:--文件字符输入流

- (4)FileWriter:--文件字符输出流

如何加载一个文件

关于新的文件IO操作:

场景:读取一个文件中的数据;

我们这里使用的FileReader的一个类

读取文件--根据字符流(读取纯文本文件)-->我们使用的是一个叫FileReader的抽象类


package day14_Test1;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;

import org.junit.Test;

public class Test22 {
  public static String path="D:\\\\复习计划.TXT";
  public static  void  main(String []args) throws IOException {
    
   FileInputStream file=new FileInputStream("D:\\\\1234.TXT");
    
    //读取文件
    byte[] date=new byte[1024];
    int length;
    
    
    while((length=file.read())!=-1){
      
//      System.out.println(Arrays.toString(date));
      System.out.println(new String(date,0,length));
    }
    //关闭
    file.close();
//    
//    //利用文件io流读取一个纯文本文件,使用的事字符流
//    
//      FileReader fileReader=new FileReader("D:\\\\复习计划.TXT");
//      
//      int len=fileReader.read();
//      System.out.println(len);
//      
//    
//    
//    
//    
//    
  }
  @Test
  public void testInput() throws IOException {
  //利用字节流读取一个文件
    
    FileInputStream file=new FileInputStream(path);
    
    //读取文件
    byte[] date=new byte[1024];
    int length;
    
    
    while((length=file.read())!=-1){
      
      System.out.println(Arrays.toString(date));
    }
    //关闭
    file.close();
    
    
    
    
  }

}

基本的文件操作“

package src.main.java.sendemail.demo.entries.fanxing;

import org.junit.Test;

import javax.xml.crypto.Data;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 * @author lucas
 * @time 2021/8/16/16:26
 * @description
 **/
public class fanxing2 {
   //io操作的;流式文件表示;

   //1.java.io.File的类,表示的是路径名、文件、目录的抽象形式
    //可能是存在的文件路径也可能不是;

    /**\
     * windows文件路径中自带的: \表示文件的层级分割符号,比如D:\安装环境的安装包\consul_1.7.2_windows_amd64
     *   对于跨平台多个,比如Linux中多数使用的事 :/左斜杠表示跨平台通用的;
     *
     * (2)对于file中的文件分割符:特殊的可以表示
     *
     *
     *  (3)文件可以进行的操作,
     *     是否存在,可读,可写,大小,长度,信息,父目录的file对象,父目录的名字
     */
    SimpleDateFormat data1 =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Test
    public  void  Test1(){
        System.out.println("时间转换"+data1.format(new Date()));
        File fileweb=new File("D:/尚硅谷/图片/QQ截图20181210225639.jpg");
        System.out.println("文件是否存在"+fileweb.exists());  //文件是否存在true
        System.out.println("文件大小"+fileweb.length());
        System.out.println("文件是否隐藏"+fileweb.isHidden());
        System.out.println("文件是否可读"+fileweb.canRead());
        System.out.println("文件是否可写"+fileweb.canWrite());
        System.out.println("文件名字"+fileweb.getName());

        //特殊的父目录
        //获取父目录的路径名
        System.out.println("父目录的名称"+fileweb.getParent());
        //获取父目录的文件对象,
        System.out.println("父目录的名称"+fileweb.getParentFile());

        //最后的修改时间是
        System.out.println("最后的修改时间"+fileweb.lastModified());//最后的修改时间1557930823262

        //时间戳的标识
        SimpleDateFormat data =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //当前的系统时间
        System.out.println("时间转换"+data1.format(new Date())); //时间转换2020-06-29 15:34:43
          System.out.println("时间转换"+data.format(new Date(fileweb.lastModified())));//时间转换19-33-15 10:33:43




//        文件是否存在true
//                文件大小58577
//        文件是否隐藏false
//                文件是否可读true
//        文件是否可写true
//        文件名字QQ截图20181210225639.jpg
//        父目录的名称D:\尚硅谷\图片
//        父目录的名称D:\尚硅谷\图片
        //表示特殊的分隔符
        System.out.println(File.separator); //  \
        System.out.println(File.separatorChar); //  \
        System.out.println(File.pathSeparatorChar); //  ;
    }
  //  File fileweb=new File("D:\\安装环境的安装包\\consul.docx");



}

一般是选用的事尽可能规范的路径,实际的表示以自身需求为主;