关于 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");
}
复制代码
一般是选用的事尽可能规范的路径,实际的表示以自身需求为主;
评论