zoukankan      html  css  js  c++  java
  • 文件操作

    文件File

    文件和目录路径名的抽象表示形式
    public static void main(String[] args) {
            // 是不是文件
            String path = "d:"+File.separator+"a.txt";//\  
            System.out.println(File.separator);
            File file = new File(path);
            if (file.isFile()) {
                System.out.println("是文件!");
            } else {
                System.out.println("not file!");
            }
    
            // 是不是目录
            String p = "d:"+File.separator;
            File f = new File(p);
            if(f.isDirectory()){
                System.out.println("是目录!");
            } else {
                System.out.println("not Directory!");
            }
        }

    文件的基本操作

    public class FileOperation {
    
        public static void main(String[] args) {
            try {
                // 实例操作一:创建一个新文件
                // 在d:\创建aa.txt文件
                String path1 = "d:" + File.separator + "aa.txt";
                File file1 = new File(path1);
                boolean flag = file1.createNewFile();
                if(flag){
                    System.out.println(" create ok!");
                }else{
                    System.out.println(" create no!");
                }
                // 实例操作二:删除一个指定的文件
                /*boolean del = file1.delete();
                if(del){
                    System.out.println(" delete ok!");
                }else{
                    System.out.println(" delete no!");
                }*/
                // 实例操作三:综合创建、删除文件的操作
                // 实例操作四:创建一个文件夹
                String pd="d:"+File.separator+"aaa"+File.separator+"bb";
                File f1 = new File(pd);
    //            f1.mkdir();//只能创建一层目录
                f1.mkdirs();//既可以创建一层,也可以创建多级目录
                System.out.println("文件夹创建成功!");
                // 实例操作五:列出指定目录的全部文件
                    File[] fs = f1.listFiles();
                    for (File file : fs) {
                        System.out.println(file);
                    }
                    String[] list = f1.list();//目录下所有文件名称
                    for (String s : list) {
                        System.out.println(s);
                    }
                // 实例操作六:判断一个给定的路径是否是目录
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
    }

    系统分隔符

    在不同的操作系统中,路径的分隔符表示是不一样的,例如:

    windows中使用反斜杆表示目录的分隔符:“” ;

    linux中使用正斜杆表示目录的分隔符:“/”。

    File.separator(通用)

    列出指定目录的全部内容

    要求:

    给定一个目录,要求列出此目录下的全部内容,因为给定目录可能存在子文件夹,此时要求也可以把所有的子文件夹的子文件通通列出来。

    分析:

    要先判断给定的路径是否是目录,之后再使用listFiles()列出一个目录中的全部内容,一个文件夹中可能包含其他的文件或子文件夹,子文件夹中也可能会包含其他的子问夹,所以此处只能采用递归的调用方式完成。

    package com.jy.file;
    
    import java.io.File;
    
    public class SearchFile {
    
        public static void main(String[] args) {
            String path="d:"+File.separator+"a";
    //        String path="d:"+File.separator+"aa.txt";
            SearchFile.getFile(path);
        }
        //查找目录下的所有文件
        public static void getFile(String path){
            File file = new File(path);
            if(file.exists()){//文件是否存在
                if(file.isDirectory()){//路径
                    File[] fs = file.listFiles();//获得路径下的所有文件
                    if(fs.length>0){
                        for (File f : fs) {
                            if(f.isFile()){
                                System.out.println(f);//打印文件
    //                            System.out.println(f.getName());//打印文件名
                            }else{
    //                            System.out.println(f);
                                getFile(f.getPath());//递归调用
                            }
                        }
                    }
                }else{
                    System.out.println(file);//打印文件
                }
            }else{
                System.out.println("文件不存在!");
            }
            
        }
    
    }
    递归文件

    文件重命名,获得父路径

    public static void main(String[] args) throws IOException {

                      /*

                       * // 创建文件 String path = "d:\myFile\aa";//目录 File p = new File(path);

                       * if(!p.exists()){ p.mkdirs(); } String file="my.txt";//文件 // File f =

                       * new File(file);

                       *

                       * File ff=new File(p, file); ff.createNewFile();

                       */

                      /*File file1 = new File("d:\aa\a", "a.txt");

                      if (!file1.getParentFile().exists()) {// 获得父目录,判断目录是否存在

                              file1.getParentFile().mkdirs();// 创建父目录

                              file1.createNewFile(); // 创建文件

                      }*/

                      // boolean renameTo(File dest)

                      // 重新命名此抽象路径名表示的文件。

                      File f1 = new File("d:\a.txt");

                      f1.renameTo(new File("e:\aa.txt"));//既可以重命名,也可以实现剪切功能

             }

    流 IO  Input Ouput

    字节流与字符流

    字节流:操作的数据,以字节为颗粒度;

    输出流: OutputStream

    输入流: InputStream

    字符流:一字符为单位,操作数据;

    输出流: Writer

    输入流: Reader

    能用字符流操作的,字节流都能完成;

    文件字输出节流

    public static void main(String[] args) throws Exception {
            //向d:\a.txt中写数据
            String str ="abcdefghi";
            /*File file = new File("d:\a.txt");
            if(!file.exists()){
                file.createNewFile();
            }*/
            //输出流 ,文件字节输出流
    //        FileOutputStream out = new FileOutputStream(file);
    //        FileOutputStream out = new FileOutputStream("d:\a.txt");
            FileOutputStream out = new FileOutputStream("d:\a.txt",true);//true追加,false默认值,覆盖文件中的数据 
            byte[] bytes = str.getBytes();
    //        out.write(bytes);
            out.write(bytes, 0, bytes.length);
            //关流
            out.close();
            
        }

    文件字节输入流

    与OutputStream类一样,InputStream本身也是一个抽象类,必须依靠其子类,如果现在是从文件中读取,子类肯定是FileInputStream。

    观察FileInputStream类的构造方法:
    public FileInputStream(File file) throws FileNotFoundException 
    
    public static void main(String[] args) {
            try {
                FileInputStream in = new FileInputStream("d:\a.txt");
                byte[] b= new byte[1024];//存文件中的数据的字节数组
    //            int read = in.read(b);
                in.read(b, 0, b.length);
    //            System.out.println(new String(b));
                System.out.println(new String(b, 0, b.length));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    文件复制

     //创建文件夹,
            String path = "e:"+File.separator+"java_file_test"+File.separator;
            File file1 = new File(path);
            file1.mkdirs();
    
            //创建文件
            String file_name = "my.txt";
            File file_my = new File(path, file_name);
            try {
                file_my.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
            //文件复制
            FileInputStream in =null;
            FileOutputStream out =null;
            String path2 = path+"test_copy.txt";
    
    
            try {
                System.out.println(path+file_name);
                String path3 = path+file_name;
                in  = new FileInputStream(path3);
                System.out.println(path2);
                out = new FileOutputStream(path2);
                int i =0;
                byte[] b = new byte[256];
                while((i=in.read(b))!=-1){
                    out.write(b,0,i);
                }
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
             finally {
                try {
                    out.close();
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            }

    字符流

    文件字符输出流

    文件字符输入流

    public static void main(String[] args) throws Exception {
            /*String str = "aaaabbbb";
            // FileWriter out = new FileWriter("d:\aa.txt");
            FileWriter out = new FileWriter("d:\aa.txt", true);// 追加
            // out.write(str.toCharArray());
            out.write(str);
            out.close();*/
            //读取
            FileReader in = new FileReader("d:\aa.txt");
            int i=0;//读取数据的个数
            char[] c = new char[8];
            while((i=in.read(c))!=-1){
                System.out.print(new String(c, 0, i));
            }
            in.close();
    
        }
  • 相关阅读:
    解决ActiveX插件ZIndex属性无效问题
    XNA游戏开发之字符篇
    XNA游戏开发之滚动背景
    ExtJs之FormPanel篇
    独立Discuz头像编辑模块
    XNA游戏开发之2D游戏
    WPF系列之应用程序生命周期
    DiscuzX2.0在windows下的配置
    Silverlight之out of Browser模式
    使用VisualStudio2010连接CodePlex进行代码管理
  • 原文地址:https://www.cnblogs.com/taozizainali/p/10879879.html
Copyright © 2011-2022 走看看