目标:
File类:
File类是java.io包中很重要的一个类
File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等
File对象不能操作文件的具体数据,即不能对文件进行读和写的操作
File的构造方法:
File(String pathname) -------指定文件(目录)名和路径创建文件对象
File类的常用方法:
package file;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileDemo1 {
public static void main(String[] args) throws IOException {
/*
一个File对象可以代表具体的文件或者目录 , 是对文件或者目录的抽象表示
*/
File f1=new File("D:\\java测试专用\\file测试用例");//指明详细的路径和文件名,注意用用双斜线或者反斜杠
//指明详细的路径和目录名,注意用双斜线
f1.createNewFile();//该名称文件不存在时,在该路径下创造出文件 原子地创建一个由该抽象路径名命名的新的空文件。
System.out.println(f1.exists());//判断文件是否存在
System.out.println(f1.canRead());//判断文件是否可以读取
System.out.println(f1.canWrite());//判断文件是否可以写入
System.out.println(f1.getParent());//返回此抽象路径的父级路径,如果不存在则返回NULL
System.out.println(f1.getName());//获取路径名称
System.out.println(f1.isDirectory());//测试此路径名是否为目录
System.out.println(f1.isFile());//判断是否为普通文件
System.out.println(f1.isHidden());//是否为隐藏文件
System.out.println(f1.lastModified());//返回最后修改时间
System.out.println(f1.getPath());//将此抽象路径名转换为路径名字符串。
System.out.println(new Date(1679652353967L));
System.out.println(f1.length());//返回此抽象路径名代表的文件的长度
}
}
输入及输出的概念:
输入:把电脑硬盘中的东西读到程序中叫做输入(input)
输出:进行数据的read操作,将程序中的内容写出到外部设备中叫做输出(output),进行数据的write操作。
字节流与字符流:
从数据流编码格式上划分为字节流和字符流
字节流常用类:
字节输入流:FileInputStream;
字节输出流:FileOutputStream
字符流常用类:
字符输入流:FileReader;
字符输出流:FileWriter
输入流与输出流:
流按照数据的传输方向分为输入流和输出流
输入流:往程序中传输数据叫做输入流
输出流:从程序中往外写数据叫做输出流
● InputStream和OutputStream的子类都是字节流 可以读写二进制文 件,主要处理音频、图片、歌曲、字节流,处理单元 为1个字节。
● Reader和Writer的子类都是字符流 主要处理字符或字符串,字符流处理单元为1个字符。
字节流将读取到的字节数据,去指定的编码表中获取对应文字字符
输入输出节点字节流:
InputStream的基本方法:
close(); 关闭流释放内存资源
read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾
read(byte[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1
read(byte[ ] b,int off,int len);从索引off处开始读取len个字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1
OutputStream的基本方法:
close();关闭流释放内存资源
flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存
writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位
write(byte[ ] b);将一个数组写入到输出流中
write(byte[ ] b,off,len);将一个数组从索引off处开始len个字节写入到输出流中
节点流与处理流:
根据封装类型不同,流又被分为:
节点流、处理流
节点流:如果流封装的是某种特定的数据源,如文件、字符数组、字符串等,则称之为节点流
处理流:如果流封装的是其它对象,则称之为处理流。处理流提供了缓冲功能,提高了读写效率,同时增加了一些新的方法
节点流中常用类:
字节输入流:FileInputStream
字节输出流:FileOutputStream
字符输入流:FileReader
字符输出流:FileWrite
处理流中常用类:
缓冲字节输入流:BufferedInputStream
缓冲字节输出流:BufferedOutputStream
缓冲字符输入流:BufferedReader
缓冲字符输出流:BufferedWriter
输入输出节点字符流:
Reader的基本方法:
close(); 关闭
read();读取一个字节并以整数的形式返回(0~255),如果返回-1说明已到输入流的末尾
read(char[ ] b);读取一系列字节并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1
read(char[ ] b,int off,int len);从索引off处开始读取len个字节数据并存储到数组b中,返回读取到的字节数,如果读取前已到输入流的末尾。则返回-1
Writer的基本方法:
close();关闭流释放内存资源
flush();刷新输出缓存区,直接将缓存区的数据输出而不必等到缓存区满,通常用在多线程的环境中,它可以确保当前缓存内容被输出,并立即释放内存
writre(int b);向输出流中写入一个字节数据,该字节数据为参数b的低八位
write(char[ ] b);将一个字符类型数组的数据写入到输出流中
write(char[ ] b,off,len);将一个字符类型数组从索引off处开始len个字节的字符写入到输出流中
对象输入输出流:
package chardemo;
import java.io.*;
import java.util.Date;
public class ObjectDemo {
/*
对象输入输出流: 把Java中的对象输出到文件中, 从文件把对象输入到程序中
为什么要把对象输出到文件中?
new Student(“张er”,20);数据存储在对象中,对象是在内存中存储,一旦程序运行结束,对象就会销毁
有时需要将对象的信息长久保存,就需要将对象输出到文件中,长久保存。 举例系统升级 关闭服务器时将对象保存起来,升级完毕,重新再把数据还原回来
把对象输出到文件的过程也称为对象的序列化,
再把对象从文件输入到程序的过程称为对象的反序列化,反序列时会生成一个新的对象,所以反序列化也是创建对象的一种方式
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// String s=new String("fsde");
//Date date=new Date();
Student student=new Student(66,"zz");
//对象输出 对象的序列化
// FileOutputStream out=new FileOutputStream("D:\\demo.txt");
// ObjectOutput output=new ObjectOutputStream(out);
//output.writeObject(s);
//output.writeObject(date);
/* output.writeObject(student);
output.flush();
output.close();
*/
//对象输入 对象反序列化
FileInputStream inputStream=new FileInputStream("D:\\demo.txt");
ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);
// String s=(String)objectInputStream.readObject();
Date date=(Date) objectInputStream.readObject();
//System.out.println(s);
System.out.println(date);
Student student1=(Student)objectInputStream.readObject();
System.out.println(student1);
objectInputStream.close();
}
}
标签:输出,读取,JAVA,字节,System,学习,IO,println,out
From: https://blog.csdn.net/2301_78490414/article/details/137206279