IO-File类

创建一个新文件

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

public class IOOperation {
	public static void main(String[] args) {
		File f = new File("D:\\hello.txt");
		try {
			f.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

运行结果:程序运行之后,在D盘下会有一个名字为hello.txt的文件。

可能会出现如下错误:

java.io.IOException: 拒绝访问。
	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
	at java.io.File.createNewFile(File.java:883)
	at io.file.IOOperation.main(IOOperation.java:10)

表示当前用户没有D盘的写入权限。


File类的两个常量

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		System.out.println(File.separator);
		System.out.println(File.pathSeparator);
	}
}

运行结果:

-----------------------------------------------------------------------

\

;

-----------------------------------------------------------------------

此处多说几句:有些同学可能认为,我直接在windows下使用\进行分割不行吗?当然是可以的。但是在linux下就不是\了。所以,要想使得我们的代码跨平台,更加健壮,所以,大家都采用这两个常量吧。


现在我们使用File类中的常量改写上面的代码:

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

public class IOOperation {
	public static void main(String[] args) {
		File f = new File("D:" + File.separator + "hello.txt");
		try {
			f.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


删除一个文件

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "D:" + File.separator + "hello.txt";
		File f = new File(fileName);
		if (f.exists()) {
			f.delete();
		} else {
			System.out.println("文件不存在!");
		}
	}
}

运行结果:D盘删除hello.txt文件,或提示文件不存在!


创建一个文件夹

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "D:" + File.separator + "hello";
		File f = new File(fileName);
		f.mkdir();
	}
}
运行结果:在D盘创建了一个hello文件夹

Mkdir和mkdirs的区别:

boolean mkdir():创建此抽象路径名指定的目录。  
boolean mkdirs():创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。  

也就是说需要创建多层目录时,需要使用mkdirs。


列出指定目录的全部文件(包括隐藏文件):

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "D:" + File.separator;
		File f = new File(fileName);
		String[] strArr = f.list();
		for(String str : strArr){
			System.out.println(str);
		}
	}
}

运行结果:

$RECYCLE.BIN
MyDrivers
Program Files
Program Files (x86)
RECYCLER
System Volume Information
tools
work

但是使用list返回的是String数组,。而且列出的不是完整路径,如果想列出完整路径的话,需要使用listFiles.他返回的是File的数组


列出指定目录的全部文件(包括隐藏文件):

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "D:" + File.separator;
		File f = new File(fileName);
		File[] fileArr = f.listFiles();
		for (File file : fileArr) {
			System.out.println(file);
		}
	}
<span style="font-family:Microsoft YaHei;font-size:14px;">}</span>

运行结果:

D:\$RECYCLE.BIN
D:\MyDrivers
D:\Program Files
D:\Program Files (x86)
D:\RECYCLER
D:\System Volume Information
D:\tools
D:\work

判断一个指定的路径是否为目录

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "D:" + File.separator;
		File f = new File(fileName);
		if (f.isDirectory()) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
		}
	}
}

运行结果:YES


搜索指定目录的全部内容

import java.io.File;

public class IOOperation {
	public static void main(String[] args) {
		String fileName = "F:" + File.separator;
		File f = new File(fileName);
		print(f);
	}

	private static void print(File f) {
		if (f != null) {
			if (f.isDirectory()) {
				File[] fileArr = f.listFiles();
				if (fileArr != null) {
					for (File file : fileArr) {
						print(file);
					}
				}
			} else {
				System.out.println(f);
			}
		}
	}
}

运行结果:

F:\jar\apache-log4j-1.2.15.zip
F:\jar\java_memcached-release_2.6.6.zip
F:\jar\log4j-1.2.17.zip
F:\jar\Memcached-Java-Client-3.0.0.jar
F:\jar\Memcached-Java-Client-release_2.6.1.tar.gz
F:\jar\spring-framework-3.2.0.RELEASE-dist.zip
F:\下载\QMDownload\Hotfix\install_flash_player_14_active_x_pa185.exe.tdl
F:\下载\QMDownload\Hotfix\install_flash_player_14_active_x_pa185.exe.tdlex
F:\下载\QMDownload\SoftMgr\PCMgr_Setup_10_0_15100_225.exe
F:\下载\QMDownload\SoftMgr\QQ6.0-6.0.11743.0.exe
F:\工作软件\16\51CTO下载-crack\pdflm16.dll
F:\工作软件\16\51CTO下载-crack.rar
F:\工作软件\16\pdflm16.dll
F:\工作软件\16\PowerDesigner160_Evaluation.exe
F:\工作软件\apache-maven-3.1.0-alpha-1-bin.tar.gz
F:\工作软件\apache-maven-3.2.1-bin.zip
......

使用RandomAccessFile写入文件

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

public class IOOperation {
	public static void main(String[] args) throws IOException {
		String fileName = "D:" + File.separator + "hello.txt";
		File f = new File(fileName);
		RandomAccessFile demo = new RandomAccessFile(f, "rw");
		demo.writeBytes("asdsad");
        demo.writeInt(12);
        demo.writeBoolean(true);
        demo.writeChar('A');
        demo.writeFloat(1.21f);
        demo.writeDouble(12.123);
        demo.close();   
	}
}

运行结果:在hello.txt文件中写入数据,写入的数据是存在乱码。

当路径下没有hello.txt文件时,会自动创建hello.txt文件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值