day20

.文件操作

文件(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();
	}
}

在这里插入图片描述

大数据2005班周敏2020080605048

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值