Java基础之文件操作和IO流入门

File 和 IO

简单的来说,File是对文件自身的操作包括创建,删除,输出,并不涉及内容的输入输出,由IO操作进行内容上的输入输出。

File的基本操作

创建对象

File file = new File("D:\\csdn\\java.txt");
File file1 = new File("D:"+File.separator)
  1. 注意括号内填入字符串,是文件在操作系统里的位置
  2. 不同于Windows系统以“\\”为划分,Linux系统文件目录之间用“/”划分,为了程序的健壮性,可以用File.separator代替划分符号

判断文件及其目录是否存在

/**
	isDirectory方法判断对象是否为文件目录
	isFile方法判断对象是否为文件
*/
public class Demo5 {
	public static void main(String[] args) throws IOException {
		File file = new File("D:"+File.separator+"try");
		if(file.isDirectory()) {
			System.out.println("这是目录");
		}
		else if(file.isFile()) {
			System.out.println("这是文件");
		}
	}
}

输出文件长度和文件创建时间

//length方法获得文件大小
//lastModified方法获得文件的最后创建时间
long length = file.length();
System.out.println("文件大小:"+length);
System.out.println("文件最后创建时间:"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").format(new Date(file.lastModified())));

File的综合操作练习

列出File对象的所有目录里的文件,这里采取递归的方法

import java.io.File;
import java.io.IOException;

public class Demo5 {
	public static void main(String[] args) throws IOException {
		File file = new File("D:"+File.separator+"百度网盘");
		FileLast.list(file);
	}
}
class FileLast{
	public static void list(File file) {
		if(file.isDirectory()) {
			File[] arr = file.listFiles();
			for(int i=0;i<arr.length;i++) {
				list(arr[i]);
			}
		}
		else if(file.isFile()) {
			System.out.println(file);
		}
	}
}

IO的基本操作

字符流和字节流都可以向文件里输入输出内容,不同的是字符流以Char为单位输入输出,而字节流以byte为单位输出输入。最为重要的是IO流涉及到资源操作,在操作的最后需要关闭资源通道。
字节流的输入的输出

//输入的数据类型
InputStream
//输入方法
Read();
//输出的数据类型
OutputStream
//输出的方法
Write();
//由于InputStream,OutputStream是抽象类型,需要通过他的子类实例化
在InputStream,OutputStream前面加上File就是它的子类
//关闭方法
close();
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Demo5 {
	public static void main(String[] args) throws IOException {
		File file = new File("D:"+File.separator+"try"+File.separator+"a.txt");
		OutputStream output = new FileOutputStream(file,true);
		String str = "hhhhhh哈哈哈哈";
		output.write(str.getBytes());
		output.close();
		
		InputStream in = new FileInputStream(file);
		byte[] data = new byte[1024];
		in.read(data);
		in.close();
		System.out.println(new String(data));
	}
}

字符流的输入和输出

//输入的数据类型
Reader
//输入方法
Read();
//输出的数据类型
Write
//输出的方法
Write();
//由于Reader,Write是抽象类型,需要通过他的子类实例化
在Reader,Write前面加上File就是它的子类
//关闭方法
close();
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

public class Demo5 {
	public static void main(String[] args) throws IOException {
		File file = new File("D:"+File.separator+"try"+File.separator+"a.txt");
		Writer output = new FileWriter(file,true);
		String str = "hhhhhh哈哈哈哈";
		output.write(str);
		output.close();
		
		Reader in = new FileReader(file);
		char[] data = new char[1024];
		in.read(data);
		in.close();
		System.out.println(new String(data));
	}
}

IO的综合操作练习

实现文件的拷贝

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;

public class Demo4 {
	public static void main(String[] args) throws Exception {
		Scanner in = new Scanner(System.in);
		File srcfile = new File(in.nextLine());
		File desfile = new File(in.nextLine());
		FileUitl.copy(srcfile,desfile);
	}
}

class FileUitl{
	public static void copy(File srcfile,File desfile) throws Exception {
		if(!desfile.getParentFile().exists()) {
			desfile.getParentFile().mkdirs();
		}
		OutputStream output = null;
		InputStream input = null;
		try {
			output = new FileOutputStream(desfile);
			input = new FileInputStream(srcfile);
			byte[] date = new byte[1024];
			int len = 0;
			while((len = input.read(date))!=-1) {
				output.write(date,0,len);
			}
			System.out.println("复制成功");
		}catch(Exception e) {
			System.out.println("复制失败");
			throw e;
		}finally{
			if(output!=null)
				output.close();
			if(input!=null)
				input.close();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44078014/article/details/105124025