I/O流
流
什么是流?流就是内存与存储设备之间传输数据的通道。他是用来读写数据的,所有的数据是存储在文件中。而文件则在硬盘中占了一块空间,我们读写数据的时候就会以流为载体进行读写和传输。
File类
输入和输出,至始至终都离不开文件。
java.io.File类是专门造作文件的类,只能对文件自身进行操作,不能对文件的内容进行造作。(也就是说file不具有流的功能,不能读写,不能输入输出)它是文件路径名的抽象表示,主要进行文件和目录的创建,查找和删除等操作。
路径的写法
在java中路径一般用"/"。
windows中的路径一般用""(在java中,必须用\才能表示\,其中一个\是转译作用)。
linux、unix中的路径一般用"/"
所以建议用“/”,因为java是跨平台的。Linux和Unix下都是用“/”
构造方法
常用的三种
1.public File(String pathname):将给定的路径名字符串转换为抽象路径名来创建新的File实例。
2.public File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例。
3.public File(File parent,String child):从父抽象路径和子路径名字符串创建新的File实例。
//文件路径名
String path ="D:/123.txt";
File file1 =new File(path);
String path2 ="D:/1/2.text";
File file2=new File(path2);//D:/1/2.text
//通过父路径和子路径字符串
String parent="F:/AAA";
String child="BBB.txt";
File file3=new File(parent,child);//相当于F:/AAA/BBB.txt
//通过父类File对象和子路径字符串
File parentDir =new File("F:/CCC");
String child1 ="BBB.txt";
File file4 =new File(parentDir,child1);//F:/CCC/BBB.txt
常用的方法
获取功能
1.public String getAbsolutePath():返回此File的绝对路径名字符。
2.public String getPath:将此File转换为路径名字符串。
3.public String getName():返回由此File表示的文件或目录的名称。
4.public long length():返回由此File表示的文件的长度。
String path ="D:/123.txt";
File file1 =new File(path);
System.out.println("文件的绝对路径:"+file1.getAbsoluteFile());
System.out.println("文件构造路径:"+file1.getPath());
System.out.println("文件长度:"+file1.length());
System.out.println("文件名称:"+file1.getName());
File f2 =new File("E:/mmm");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录的构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());
上边提到了绝对路径和相对路径
相对路径:绝对路径即是绝对的路径,固定死的路径,则是以根目录为起始点某一文件的路径,我们平时在电脑上的文件在硬盘上真正存在的路径就是绝对路径,是完整的路径,盘符开头,F:/aaa.txt.
绝对路径:是从当前路径开始的路径,一个简化的路径,不以盘符开头,/aaa.txt/
判断功能的方法
public boolean exists():文件或目录是否真实存在
public boolean isDirectory() :是否为目录。
public boolean isFile() :是否为文件。
创建删除的方法
ublic boolean createNewFile() :文件不存在,创建一个新的空文件并返回true,文件存在,不创建文件并返回false。
public boolean delete() :删除由此File表示的文件或目录。
public boolean mkdir() :创建由此File表示的目录。
public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
IO的分类
数据流向分:
输入流 把数据读取到内存中
输出流 把数据从内存写到其他设备中
根据数据类型分:
字节流:以字节为单位,读写数据。
字符流:以字符为单位,读写数据。
字节输入流 InputStream 往里读
字节输出流 OutputStream 往外写
字符输入流 Reader
字符输出流 Writer
由这四个类的子类名称基本都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
OutputStream有很多子类,我们从最简单的一个子类FileOutputStream开始。看名字就知道是文件输出流,用于将数据写出到文件。
FileOutputStream构造方法
两种
**1、 public FileOutputStream(File file):**根据File对象为参数创建对象。
2、 public FileOutputStream(String name): 根据名称字符串为参数创建对象。
一般使用第二种
FileOutputStream写出字节数据
使用FileOutputStream写出字节数据主要通过Write方法,而write方法分如下三种
void write(int b)
void write(byte[] b)
void write(byte[] b,int off,int len) //从off
索引开始,len
个字节
FileInputStream
int read()
int read(bety[] b)
int read(bety[] b)