JAVA IO

在 Java IO实际上很好的体现了Java 的面向对象的设计思想

一个接口或抽象类的具体行为由子类决定,那么根据实例化子类的不同完成的功能也不同

Java IO中的所有操作类都放在java.io 包中

主要的类和接口是:File、InputStream、OutputStream、Reader、Writer、Seralzable 接口


File

File 类在整个java.io 包中是一个独立的类,此类的主要功能是完成与平台无关的文件操作,例如:创建文件、删除文件等等


创建文件

例如,现在要在D盘上创建一个demo.txt的文件

创建文件的方法:public bollean createNewFile() throws Exception


package org.iodemo;

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

public class IoDemo01 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\1.txt");
		try{
			file.createNewFile();
		}catch(IOException e){
			e.printStackTrace();
		}
	}

}

程序本身只是作为一个文件的创建出现,而如果要使用具体的内容的输出,则必须依靠IO操作流。


删除文件


如果要想删除文件则使用:public bollean delete()


package org.iodemo;

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

public class IoDemo02 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\1.txt");
		file.delete();
	}

}

以上的两个操作确实完成了文件的创建及删除,可以代码却同样存在问题。

在各个操作系统中,文件的分隔符是不一样的:

windows:\

linux:/

Java 本身属于跨平台的语言,那么应该可以适应各个不同的平台要求。那么为了解决可以自动适应不同系统的分隔符要求,所以在File类中提供了以下几个常量:

路径分隔符: public static final String pathSeparator “;”

分隔符: public static final String separator "\" 或者 "/"

所以,对于实际的开发来讲,必须使用这样的常量进行声明


判断文件是否存在

提供以下的方法:public boolean exists()

package org.iodemo;

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

public class IoDemo03 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\1.txt");
		if (file.exists()){
			file.delete();
		}else{
			try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

那么,此时就可以利用此种特点完成以下的一个要求:

要求编写一个程序,此程序的主要功能如下,如果文件存在,则删除,如果文件不存在则创建一个新的文件



判断路径是文件还是文件夹

在程序中可以使用如下的方法进行判断

判断是否是文件夹: public boolean isDirectory()

判断是否是文件:public bollean isFile()


package org.iodemo;

import java.io.File;

public class IoDemo05 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"a.txt");
		System.out.println(file.isDirectory());
		System.out.println(file.isFile());
	}

}

列出目录中的内容

在File 类中提供了以下的两个方法进行目录的列表操作

public String[] list()

public File[] listFiles()


package org.iodemo;

import java.io.File;

public class IoDemo08 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"Download");
		String[] files = file.list();
		for (int i=0;i<files.length;i++){
			System.out.println(files[i]);
		}
	}

}

此处列出来的只是一个目录下的文件或文件夹名称而已


package org.iodemo;

import java.io.File;

public class IoDemo08 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"Download");
		File[] files = file.listFiles();
		for (int i=0;i<files.length;i++){
			System.out.println(files[i]);
		}
	}

}

这两个操作都同样属于列表的操作,但是后者却可以列出完整的路径,实际上此时,如果为更加清楚的表示出列出的是路径


package org.iodemo;

import java.io.File;

public class IoDemo08 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"Download");
		File[] files = file.listFiles();
		for (int i=0;i<files.length;i++){
			System.out.println(files[i].getParent()+"-->"+files[i].getPath());
		}
	}

}

如果要想操作文件,则肯定使用后者最为方便,因为可以找到File类的对象功能


创建目录

使用mkdir()方法即可


package org.iodemo;

import java.io.File;

public class IoDemo06 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:\\123");
		file.mkdir();

	}

}

在windows 中有很多文件的后缀,例如:txt、doc、jpg ,实际上这些文件的后缀与文件本身的内容没有任何的关系,加入后缀只是为了方便程序的管理而已

当然,在创建的时候也可以在一个文件夹下创建文件


package org.iodemo;

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

public class IoDemo09 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D"+File.separator+"Demo"+File.separator+"test.demo");
                file.getParentFile().mkdir();
		try {
			file.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


package org.iodemo;

import java.io.File;

public class IoDemo07 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator);
		getFile(file);
	}
	
	public static void getFile(File f){
		if (f.isDirectory()){
			File lists[] = f.listFiles();
			if (lists != null){
				for (int i=0;i<lists.length;i++){
						getFile(lists[i]);
					}
			}
		}
		System.out.println(f);
	}

}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值