对文件进行操作

来源:互联网 发布:autodesk软件介绍 编辑:程序博客网 时间:2024/05/16 17:07

 

此程序主要用于学习如何创建文件夹,如何创建文件并在文件中写入数据,以及读取文件中存在的数据!

还有就是查找某个目录下的所有文件并且判断是目录还是文件!

 

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class test {
    //用于测试的主测序
    public static void main(String[] args) {
        List<Person> list = new ArrayList<Person>();
        for (int i = 0; i < 3; i++) {
            Person ps = new Person();
            ps.setName("大家名字一样,呵呵");
            ps.setAge(i);
            ps.setPhone("AAAAAAAAA");
            list.add(ps);
        }
        System.out.println("是否自己指定文件创建的目录?{y(是)/n(否)}");
        Scanner sc = new Scanner(System.in);
        String x = sc.next();
        String path = null;
        if(x.equalsIgnoreCase("y")){
            System.out.println("请输入文件创建的目录。如:/"d://src/"");
            path = sc.next();
        }else{
            path = "d://src//123";
        }
        test sj = new test();
        File f = new File(path);
        sj.testFile(f, list);
        sj.testAllList(f);
    }

    public void testFile(File dir,List<Person> list) {
        if (dir.exists()) {
            if (dir.isDirectory()) {
                System.out.println("此目录已经存在");
            }
        } else {
            try {
                dir.mkdirs();
                System.out.println("目录创建成功");
            } catch (Exception ef) {
                System.out.println("目录创建出错");
            }
        }
        //创建九个text文档,并向文档中写入一些信息
        for (int i = 0; i < 9; i++) {
            File f = new File(dir.getPath(), i + ".txt");
            if (f.exists())
                continue;
            try {
                f.createNewFile();
                System.out.println(list.size());
                System.out.println(dir.getPath() + "//" + f.getName());
                RandomAccessFile raf = new RandomAccessFile(dir.getPath() + "//" + f.getName(),"rw");
                //FileWriter out = new FileWriter(dir.getPath() + "//" + f.getName());
                for (int j = 0; j < list.size(); j++) {
                    Person ps = (Person) list.get(j);
                    raf.write(ps.getName().getBytes());
                    raf.write(ps.getAge());
                    raf.write(ps.getPhone().getBytes());
                }
                raf.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(dir.getPath() + "//" + f.getName());
        }
    }
   
    //得到目录下的所有文件,其中目录也是一个特殊的文件
    public void testAllList(File allList) {
        File[] fileArray = allList.listFiles();
        if (null == fileArray)
            return;
        for (int i = 0; i < fileArray.length; i++) {
            if (fileArray[i].isDirectory()) {
                System.out.println("目录: " + fileArray[i].getAbsolutePath());
                testAllList(fileArray[i].getAbsoluteFile());
            } else if (fileArray[i].isFile()) {
                System.out.println("文件: " + fileArray[i].getAbsolutePath());
                try {
                    //第一种读取文件数据的方法,RandomAccessFile拥有异常强大的文件操作方法
                    RandomAccessFile raf = new RandomAccessFile(fileArray[i].getAbsolutePath(),"rw");
                    byte[] buf = new byte[1024];
                    int len = raf.read(buf);
                    //第二种读取文件数据的方法
                    //char[] buf = new char[1024];
                    //FileReader in = new FileReader(fileArray[i].getAbsolutePath());
                    //int len = in.read(buf);
                    System.out.println(new String(buf,0,len));
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                System.out.println("文件名-->其他文件");
            }
        }
    }

}

原创粉丝点击