javaIO流
所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写。流具有最基本的特点:“One dimension , one direction .” 即流是一维的,同时流是单向的。关于维和我们通常说的一维长度,二维平面,三维空间,四维时空……是同一个概念,流就是一维的。单向就是只可以一个方向(按顺序从头至尾依次)读取,不可以读到某个位置,再返回前面某个位置。
目前JAVA IO流的分类
Java IO一般包含两个部分:
- java.io包中堵塞型IO
- java.nio包中的非堵塞型IO,通常称为New IO。
java.io包中的File类
- java.io.File类代表物理文件或者文件夹对象
- java.io.File类可以删除、创建、修改文件或者文件夹属性
- JAVA中文件或者文件夹都用java.io.File类代表
// 物理文件的JAVA对象描述
// File可以代表文件,也可以代表文件夹
// File对象可以创建、删除和获取文件或者文件夹的属性
File file = new File("d:\\xxx.txt");
File file2 = new File("d:\\hzj");
// 创建一个文件
File file3 = new File("d:\\hzj1235.txt");
try {
// 判断是否有同名文件存在
if (file3.exists()) {
// 存在,也可以删除掉
// file3.delete();
System.out.println("文件存在");
}
else {
// 不存在开始创建
// file3.createNewFile()会返回一个boolean,返回true代表创建成功
if (file3.createNewFile()) {
// 执行具体业务
System.out.println("创建成功");
}
else {
// 创建文件失败
System.out.println("创建失败");
}
}
}
catch (IOException e) {
e.printStackTrace();
}
}
使用java.io.File类获取文件的规范路径
//文件的路径
//这里使用getCanonicalPath()方法返回规范的全路径
File file=new File("d:\\hzj123.txt");
try {
System.out.println(file.getCanonicalPath());
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
使用java.io.File类获取文件夹的内容
// 递归文件夹
File file = new File("d:\\实训二");
//判读是否为文件夹
if (file.isDirectory()) {
//获取该文件夹的下一层的所有文件或者文件夹数组
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
try {
//判读孩子是否为文件夹或者文件,然后简单的做一个区分
if(files[i].isDirectory())
{
System.out.println(files[i].getCanonicalPath()+":【D】");
}
else
{
System.out.println(files[i].getCanonicalPath());
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用java.io.File类获取文件夹的所有层次文件或者文件夹
package com.hzj.test;
import java.io.File;
import java.io.IOException;
public class Test4 {
// 打印出给定的根文件夹的所有文件或者文件夹
public void getAllFiles(String path) {
File file = new File(path);
File[] files = file.listFiles();
try {
for (int i = 0; i < files.length; i++) {
// 打印结果
try {
System.out.println(files[i].getCanonicalPath());
}
catch (IOException e) {
e.printStackTrace();
}
// 如果是目录,那么继续使用getAllFiles方法递归
if (files[i].isDirectory()) {
try {
getAllFiles(files[i].getCanonicalPath());
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
catch (Exception e) {
}
}
/**
* @param args
*/
public static void main(String[] args) {
Test4 test4 = new Test4();
test4.getAllFiles("c:\\");
}
}