文章目录
.文件操作
文件(file)包括文本,文件,图片,文件,声音,文件等,是最常见的数据源之一。
一.分隔符
1.1 路径分隔符
Windows是(;)分号,
Linux(:)是冒号。
1.2 文件名称分隔符
Windows是(\)正斜杠。
Linux是(/)反斜杠。
二.file类
Java提供的file类可以表示文件,也可以表示目录。
在程序中,一个file对象代表一个文件或目录,利用file类可以对文件或目录及其属性进行基本操作,也可以查出与文件相关的信息。
java.util.File类是文件和目录路径名的抽象表示,主要用于文件盒目录的创建.查找.删除等操作
Java把电脑中的文件盒文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作,
2.1 可以使用File类的方法:
创建一个文件.文件夹
删除一个文件.文件夹
获取一个文件.文件夹
判断文件,文件夹是否存在
对文件夹进行遍历
获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法.
2.2 构造方法
public File(String pathname) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。//如果字符串代表的文件存在那么就指向这个文件,如果不存在,就会创建该文件
public File(String parent,String child):根据parent路径名字符串和child路径名字字符串创建一个新File实例
2.3代码实例:
常用API方法
获取功能的方法
判断功能的方法
创建删除功能的方法
目录遍历功能的方法
2.3.1获取功能的方法
public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串.
public String getPath():将此File转换为路径名字符串
public String getName():返回由此File表示的文件或目录的名称.
public long length():返回此File表示的文件的长度.
2.3.2判断功能的方法
public boolean exists():判断File表示的文件或者文件夹是否实际存在
public boolean isDirectory():判断此Dile表示的文件夹是否存在
public boolean isFile():判断此File表示的文件是否存在
2.3.3 创建和删除文件的方法
public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个新的文件,返回值是true
publc boolean delete():删除由此File表示的文件或者目录
public boolean makdir():创建由此File表示的文件夹
public boolean makdirs():创建由此File表示的文件夹,包括任何必须但是又不存在的父目录.
2.3.4 目录的遍历
public String[] list():返回一个String数组,表示该File目录中的所有的子目录或者子文件
public File[] listFile():返回一个File数组,表示该File目录中的所有的子目录或者子文件.
三.流
读文件是指把文件中的数据读取到内存及输入反之;写文件就是把文内存中的数据写到文件中及输出。
流是一串流动的数据,是以先进先出的方式发送和接收数据的通道。
流是有方向的程序,若书需要获取数据,则打开一个来自数据源的流,通过流读取数据。若程序需要输出,则打开一个到目的地的流,将数据输出到目的。
3.1字节流。
Java定义了两种类型的输入/输出流字节流和字符流。
字节流用以处理字节数据的输入和输出。
文件字节输入流
FileInputStream
文件字节输入流,万能的,任何类型的文件都可以采用这个流来读
字节的方式,完成输入的操作,完成读的操作(从硬盘—>内存)
调用read()时,指针移动,并且返回指向的字节本身
调用read(byte)时,返回读取进的字节数量
已经读到文件的末尾了,再读的时候读取不到任何数据,返回-1
程序代码及运行结果。
package demo01;
import java.io.File;
import java.io.IOException;
public class Demo01File {
public static void main(String[] args) throws IOException {
//路径分隔符
String pathSeparator=File.pathSeparator;
System.out.println(pathSeparator);//win 是 分号;Linux :冒号
String separator=File.separator;
System.out.println(separator);//文件名称分割符 \ linux : /root/home/
//绝对路径
//相对路径../../
//构造方法演示
show01();
//show02("D:\\xiaojava\\day20_code");
show03();
//常用方法演示
//show04();
//show05();
show06();
show07();
//show08();
show09();
show10();
show11();
show12();
}
private static void show12() {
//如果路径不存在,直接返回false
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.delete();
System.out.println(b1);
//直接从硬盘删除,不会放入回收站
File f2=new File("1\\2\\33\\44");//相对路径会自动补齐
boolean b2=f2.delete();
System.out.println(b2);
}
private static void show11() {
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.mkdir();//只能创建一个文件夹
System.out.println(b1);
File f2=new File("D:\\xiaojava\\day20_code\\1\\2\\33\\44\\hello.java");
boolean b2=f2.mkdir();//递归创建文件夹
System.out.println(b2);
}
private static void show10() throws IOException {
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.createNewFile();
System.out.println(b1);
//第二次执行的时候返回 false 因为文件已经存在
File f2=new File("D:\\xiaojava\\day20_code\\新建文件夹");
//不要看文件的名字,必须看类型
boolean b2=f2.createNewFile();
System.out.println(b2);
}
private static void show09() {
File f1=new File("D:\\xiaojava\\day20_code");
if(f1.exists()) {//返回true,进入if语句
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
}
System.out.println("=======================");
File f2=new File("D:\\xiaojava\\day20_code\\classfive");
if(f2.exists()) {//不存在返回false,所以不会进入if语句
System.out.println(f2.isDirectory());
System.out.println(f2.isFile());
}
System.out.println("=======================");
File f3=new File("D:\\xiaojava\\day20_code\\classfive");
if(f3.exists()) {
System.out.println(f3.isDirectory());
System.out.println(f3.isFile());
}
}
private static void show08() {
File f1=new File("D:\\xiaojava\\day20_code");
System.out.println(f1.exists());
File f2=new File("D:\\rxp\\java\\20\\day20_code\\classfive");
System.out.println(f2.exists());
File f3=new File("D:\\rxp\\java\\20\\day20_code\\classpath");
System.out.println(f3.exists());
File f4=new File("D:\\rxp\\java\\20\\day20_code\\hello.java");
System.out.println(f4.exists());
}
//注意:文件夹没有大小概念,不能获取文件夹大小
private static void show07() {
File f1=new File("D:\\xiaojava\\day20_code");
System.out.println(f1.length());//文件夹的大小是0
File f2=new File("D:\\src\\xiaojava\\day20_code\\classfive");
System.out.println(f2.length());//不存在文件夹,打印大小为0
File f3=new File("D:\\src\\xiaojava\\day20_code\\classpath");
System.out.println(f3.length());//最后为文件的情况,且文件存在,打印文件大小
File f4=new File("D:\\src\\xiaojava\\day20_code\\classpath");
System.out.println(f4.length());//最后为文件的情况,且文件不存在,打印文件大小
}
private static void show06() {
File f1=new File("D:\\src\\xiaojava\\day20_code\\hello.java");
File f2=new File("D:\\src\\xiaojava\\day20_code");
//获取的是构造方法传递路径结尾部分
System.out.println(f1.getName());
System.out.println(f2.getName());
}
private static void show05() {
File f1=new File("D:\\src\\xiaojava\\day20_code\\hello.java");
File f2=new File("a.txt");
String path1=f1.getPath();
System.out.println(path1);
System.out.println(f2.getPath());
System.out.println(f1);
System.out.println(f1.toString());
}
private static void show03() {
File parent=new File("D:\\src\\java\\test");
File f1=new File(parent,"hello.java");
System.out.println(f1);
}
private static void show04() {
File f1=new File("D:\\src\\java\\test\\hello.java");
String absolutepath1=f1.getAbsolutePath();
System.out.println(absolutepath1);
File f2=new File("hello.java");//相对路径创建
//创建的时候,放在项目路径下面
String absolutepath2=f2.getAbsolutePath();
System.out.println(absolutepath2);//获取绝对路径
}
private static void show01() {
File f1=new File("D:\\src\\java\\test");
//System.out.println(f1);
File f2=new File("D:\\src\\java\\test\\a.txt");
//仅仅是创建了File这样的对象,并不会真去检验路径的正确与否
System.out.println(f2);
File f3=new File("b.txt");
System.out.println(f3);
}
private static void show02(String parent, String child) {
File f1=new File(parent,child);
System.out.println(f1);
}
}
package demo02;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 构造方法的作用:
* 1.创建一个FileOutputStream对象
* 2.根据构造方法传递的文件/文件路径,创建一个空的文件
* 3.会把FileOutputStream对象指向创建的文件
*
*
* 写入过程:
* Java程序-->jvm(java 虚拟机)-->os(操作系统)-->会调用对应的驱动-->把数据写入文件
* */
public class Demo02OutputStream {
public static void main(String[] args) throws IOException{
//创建一个FileOutputStream对象,构造方法传入数据目的地
FileOutputStream fos=new FileOutputStream("a.txt");
//调用write方法,讲数据写入到文件中
//fos.write(97);
//fos.write(98);
//fos.write(98);
//释放资源
//fos.write(100);错误写法
//fos.write(49);
//fos.write(48);
//fos.write(48);
//byte[] bytes= {65,66,67,68};
//byte[] bytes= {-65,-66,-67,-68};//会被当成中文来解释
byte[] bytes= {65,66,67,68,69,70};
fos.write(bytes,2,3);
fos.close();
}
}