关于 IO:
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 操作:
确定当前的 io 流;
选择操作文件的单位(字节流还是字符流)--一般是字节流:
开始具体的方法操作;API;
场景:读取一个文件中的数据;
我们这里使用的 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");
}
复制代码
一般是选用的事尽可能规范的路径,实际的表示以自身需求为主;
评论