JAVA IO

一、关于Java IO的概述

  • IO流用来处理设备之间的数据传输
  • Java对数据的操作是通过流的方式
  • Java用于操作流的对象都在IO包中
  • IO流按照流向划分为输入流、输出流
  • IO流按照操作数据划分为字符流(专门处理文字)、字节流
我理解的程序处理数据过程大致如下:

二、File相关操作

一个File类的实例代表一个文件或文件夹,File.pathSeparator指的是分隔连续多个路径字符串的分隔符,File.separator才是用来分隔同一个路径字符串中的目录的。由于java可跨平台,所以当new一个File时,路径中的“;"和"/"要用File.pathSeparator和File.separator代替。

File常用的构造方法

import java.io.File;

public class IOTest {
	public static void main(String[] args) {
		File file1=new File("D:"+File.separator+"IOTest.Java");//文件绝对路径
		File file2=new File("D:"+File.separator+"IO");//目录的绝对路径
		File file3=new File(file2, "IOTest.java");//第一个参数File实例代表一个目录file2,第二个参数为file2目录内的文件名
		File file4=new File("D:"+File.separator+"IO", "IOTest.java");//目录和文件的字符串类型
		
	}
}
File的常用方法

	file1.createNewFile();
		System.out.println("file1.isFile():  " + file1.isFile());
		System.out.println("file1.isDirectory():  " + file1.isDirectory());
		System.out.println("file1.getName():  " + file1.getName());
		System.out.println("file1.getAbsolutePath  " + file1.getAbsolutePath());
		file2.mkdir();
		System.out.println("file2.isDirectory():  " + file1.isDirectory());
		String[] list = file2.list();//返回String[]类型的文件 只含文件名
		File[] listFile=file2.listFiles();//返回File[]类型的文件 包含完整的文件对象


其他相关方法的总结如下:

  • String getName():返回文件名或路径名(若是路径,返回最后一级子路径名)
  • String getPath():返回对象对应的路径名
  • File  getAbsoluteFile():返回绝对路径
  • String getAbsolutePath():返回对象对应的绝对路径
  • String getParent():返回文件目录的上一级目录名
  • boolean renameTo(File newName):重命名此File对象对应的文件或目录,若重命名成功返回true;
  • boolean exists():判断对象对应的文件或目录是否存在;
  • boolean canWrite():判断对象对应文件或目录是否可写;
  • boolean canRead():判断对象对应文件或目录是否可读;
  • boolean isFile():判断对象是文件,不是目录;
  • boolean isDirectory()  判断对象的文件是否是一个目录; 
  • boolean isAbsolute() 判断对象对应文件或目录是否为绝对路径名; 
  • boolean createNewFile() 当且仅当不存在,该方法创建一个该File对象所指定的新文件,创建成功返回true。 
  • boolean delete():删除File对象所对应的文件或路径;
  • boolean mkdir() 创建File对象所对应的目录,调用该方法的File对象必须对应路径,而不是文件。
  • String[] list():列出File对象的所有子文件名和路径名。
  • File[] listFiles():列出File对象的所有子文件和路径。
  • static File[] listRoots():列出系统所有的根路径;
对文件的操作前要判断文件是否存在,再做进一步io操作。


练习列出一个目录下所有文件及目录(利用递归):

public class IOTest {
	public static void main(String[] args) throws Exception {
	
		File file = new File("C:\\Users\\Mr\\Desktop\\源码");
		scan(file);

	}

	private static void scan(File file) {
		// TODO Auto-generated method stub
		File[] files = file.listFiles();
		for (int i = 0; i < files.length; i++) {
			File newfile = files[i];
			if (newfile.isFile()) {
				System.out.println("文件:" + newfile.getName());
			} else {
				System.out.println("目录:" + newfile.getName());
				scan(newfile);
			}
		}
	}
}

文件过滤器,根据文件名或路径获得想要的文件对象

	private static void scan(File file) {
		// TODO Auto-generated method stub
		File[] files = file.listFiles(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				return name.contains(".java");
			}
			
		});
		System.out.println(Arrays.toString(files));

	}
通过listfile方法传入一个FilenameFilter接口的实例,复写accept方法,控制想要得到的文件。

三、流

  • 字符流

FileReader(直接读取)

import java.io.File;
import java.io.FileReader;

public class FileReaderTest   {
	public static void main(String[] args) throws Exception{
		File file=new File("d:"+File.separator+"test4.txt");
		FileReader reader=new FileReader(file);
		int ch=0;
		while((ch=reader.read())!=-1){
			System.out.print((char)ch);
		}
		reader.close();
	}
}

利用字符数组读取以提高效率

import java.io.File;
import java.io.FileReader;

public class FileReaderTest {
	public static void main(String[] args) throws Exception {
		File file = new File("d:" + File.separator + "test4.txt");
		FileReader reader = ne
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值