2011-09-01 奋力拼写,激情重燃。继续java io 操作(文件操作)

今天讲了java io 里面的file类进行了一些文件的基本操作,写入数据,显示指定目录下的文件,进行一些简单文件筛选等等。今天值得高兴地是又找回想写代码的冲动了。嘻嘻!!!依旧说一下今天的作业:

1、删除一个指定目录下的所有文件。

代码如下:

import java.io.*;
class DuiGuiLianXi{
	public static void deleteF(File df){
		File[] fileBuffer=df.listFiles();
		for(int i=0;i<fileBuffer.length;i++){
			if(fileBuffer[i].isDirectory()){
				deleteF(fileBuffer[i]);
			}
			System.out.println(fileBuffer[i].delete());
		}
	}
	public static void main(String[] args) {
		File fie=new File("F:\\递归练习");
		deleteF(fie);
	}
}
主要用到递归方法。其实递归是我的弱项。经过差不多三小时的测试终于出了结果。

2、编写程序实现过滤功能,当指定过滤条件为*或*.*时显示所有文件。

代码:

import java.io.*;
class TestFileFilter implements FileFilter{
	String str;
	public TestFileFilter(String str){//构造函数传递要筛选的条件
		this.str=str;
	}
	public boolean accept(File pathname){//实现筛选功能
		String name=pathname.getName();
		if(str.equals("*")||str.equals("*.*"))
			return true;
		if(pathname.isDirectory())
			return false;
		int dex=name.indexOf('.');
		if(dex==-1||dex==name.length()-1)
			return false;
		if(name.substring(dex+1).equals(str))
			return true;
		return false;
	}

	public static void main(String[] args) {
		TestFileFilter tff=new TestFileFilter("txt");//筛选出txt格式的文件
		File file=new File("f:");
		File[] fileBuffer=file.listFiles(tff);
		for(File fie:fileBuffer){
			System.out.println(fie.getName());
		}
	}
}
我写的这个只能筛选像txt,doc的东西,要是输入“*.txt”则不能实现筛选功能,要是输入“txt”便可筛选出所有txt格式的文件。照理说应该用正则表达式实现完美效果不过我不会正则表达式能力有限只能这样了。

3、使用RandomAccessFile类向文件中写入10个double类型的数据,然后从文件中读出第1个、第5个、第9个数据并格式化(如小数点后显示2位)显示在屏幕上。还可修改第8个数据。

代码:

import java.io.*;
import java.text.DecimalFormat;
class TestRandomAccessFile{
	public static void main(String[] args) {
		DecimalFormat df=new java.text.DecimalFormat("#0.00");//格式化输出
		RandomAccessFile traf=null;
		try{
			traf=new RandomAccessFile(new File("f:\\TestRandomAccessFile.txt"),"rw");
			for(int i=0;i<10;i++){
				traf. writeDouble(Math.random()*1.8);
				traf.seek(8*i);//需要注意这点
				System.out.println(traf.readDouble());
				if(i==0||i==4||i==8){
					traf.seek(i*8);
					System.out.println(df.format(traf.readDouble()));
				}
			}
			traf.seek(56);//注意位置
			traf. writeDouble(Math.random()*1.8);
			System.out.println(traf.readDouble());
		}catch(IOException e){
			//e.printStackTrace();
			System.out.println(e.toString());
		}finally{
			if(traf!=null){
				try{
					traf.close();
				}catch(IOException e){
					System.out.println(e.toString());
				}
			}
		}
		//System.out.println("Hello World!");
	}
}
这个题有一个混淆点,一个难点。分别是:读取数据时文件指针的移动,数据的格式化输出。一定要注意指针的移动。



你可能感兴趣的:(java,IO,正则表达式,String,File,import)