`

Java里的File文件操作控制

阅读更多
一.获得控制台用户输入的信息
/** *//**获得控制台用户输入的信息
      * @return
      * @throws IOException
      */
     public String getInputMessage() throws IOException...{
         System.out.println("请输入您的命令∶");
         byte buffer[]=new byte[1024];
         int count=System.in.read(buffer);
         char[] ch=new char[count-2];//最后两位为结束符,删去不要
         for(int i=0;i<count-2;i++)
             ch[i]=(char)buffer[i];
         String str=new String(ch);
         return str;
     }

可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进。
二.复制文件
     1.以文件流的方式复制文件

/** *//**以文件流的方式复制文件
      * @param src 文件源目录
      * @param dest 文件目的目录
      * @throws IOException 
      */
     public void copyFile(String src,String dest) throws IOException...{
         FileInputStream in=new FileInputStream(src);
         File file=new File(dest);
         if(!file.exists())
             file.createNewFile();
         FileOutputStream out=new FileOutputStream(file);
         int c;
         byte buffer[]=new byte[1024];
         while((c=in.read(buffer))!=-1)...{
             for(int i=0;i<c;i++)
                 out.write(buffer[i]);        
         }
         in.close();
         out.close();
     }
    // 该方法经过测试,支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式

三.写文件
// 1.利用PrintStream写文件

/** *//**
      * 文件输出示例
      */
     public void PrintStreamDemo()...{
         try ...{
             FileOutputStream out=new FileOutputStream("D:/test.txt");
             PrintStream p=new PrintStream(out);
             for(int i=0;i<10;i++)
                 p.println("This is "+i+" line");
         } catch (FileNotFoundException e) ...{
             e.printStackTrace();
         }
     }
  //   2.利用StringBuffer写文件
public void StringBufferDemo() throws IOException......{
         File file=new File("/root/sms.log");
         if(!file.exists())
             file.createNewFile();
         FileOutputStream out=new FileOutputStream(file,true);        
         for(int i=0;i<10000;i++)......{
             StringBuffer sb=new StringBuffer();
             sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 ");
             out.write(sb.toString().getBytes("utf-8"));
         }        
         out.close();
     }
    // 该方法可以设定使用何种编码,有效解决中文问题。


四.文件重命名
     /** *//**文件重命名
      * @param path 文件目录
      * @param oldname   原来的文件名
      * @param newname 新文件名
      */
     public void renameFile(String path,String oldname,String newname)...{
         if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时,才有必要进行重命名
             File oldfile=new File(path+"/"+oldname);
             File newfile=new File(path+"/"+newname);
             if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名
                 System.out.println(newname+"已经存在!");
             else...{
                 oldfile.renameTo(newfile);
             } 
         }         
     }   

五.转移文件目录

    // 转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件,而转移文件目录则是转移后,只有新目录中存在该文件。
 /** *//**转移文件目录
      * @param filename 文件名
      * @param oldpath 旧目录
      * @param newpath 新目录
      * @param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作
      */
     public void changeDirectory(String filename,String oldpath,String newpath,boolean cover)...{
         if(!oldpath.equals(newpath))...{
             File oldfile=new File(oldpath+"/"+filename);
             File newfile=new File(newpath+"/"+filename);
             if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件
                 if(cover)//覆盖
                     oldfile.renameTo(newfile);
                 else
                     System.out.println("在新目录下已经存在:"+filename);
             }
             else...{
                 oldfile.renameTo(newfile);
             }
         }       
     }
   
六.读文件
   //  1.利用FileInputStream读取文件
     /** *//**读文件
      * @param path
      * @return
      * @throws IOException
      */
     public String FileInputStreamDemo(String path) throws IOException...{
         File file=new File(path);
         if(!file.exists()||file.isDirectory())
             throw new FileNotFoundException();
         FileInputStream fis=new FileInputStream(file);
         byte[] buf = new byte[1024];
         StringBuffer sb=new StringBuffer();
         while((fis.read(buf))!=-1)...{
             sb.append(new String(buf));    
             buf=new byte[1024];//重新生成,避免和上次读取的数据重复
         }
         return sb.toString();
     }

//2.利用BufferedReader读取 在IO操作,利用BufferedReader和BufferedWriter效率会更高一点

     /** *//**读文件
      * @param path
      * @return
      * @throws IOException
      */
     public String BufferedReaderDemo(String path) throws IOException...{
         File file=new File(path);
         if(!file.exists()||file.isDirectory())
             throw new FileNotFoundException();
         BufferedReader br=new BufferedReader(new FileReader(file));
         String temp=null;
         StringBuffer sb=new StringBuffer();
         temp=br.readLine();
         while(temp!=null)...{
             sb.append(temp+" ");
             temp=br.readLine();
         }
         return sb.toString();
     }


    // 3.利用dom4j读取xml文件
     /** *//**从目录中读取xml文件
      * @param path 文件目录
      * @return
      * @throws DocumentException
      * @throws IOException
      */
     public Document readXml(String path) throws DocumentException, IOException...{
         File file=new File(path);
         BufferedReader bufferedreader = new BufferedReader(new FileReader(file));
         SAXReader saxreader = new SAXReader();
         Document document = (Document)saxreader.read(bufferedreader);
         bufferedreader.close();
         return document;
     }

    七.创建文件(文件夹)

//1.创建文件夹 
     /** *//**创建文件夹
      * @param path   目录
      */
     public void createDir(String path)...{
         File dir=new File(path);
         if(!dir.exists())
             dir.mkdir();
     }

//2.创建新文件 /** *//**创建新文件
      * @param path 目录
      * @param filename 文件名
      * @throws IOException
      */
     public void createFile(String path,String filename) throws IOException...{
         File file=new File(path+"/"+filename);
         if(!file.exists())
             file.createNewFile();
     } 

  八.删除文件(目录)  
//1.删除文件    
     /** *//**删除文件
      * @param path 目录
      * @param filename 文件名
      */
     public void delFile(String path,String filename)...{
         File file=new File(path+"/"+filename);
         if(file.exists()&&file.isFile())
             file.delete();
     }


//2.删除目录
//要利用File类的delete()方法删除目录时,必须保证该目录下没有文件或者子目录,否则//删除失败,因此在实际应用中,我们要删除目录,必须利用递归删除该目录下的所有子目//录和文件,然后再删除该目录。 
 /** *//**递归删除文件夹
      * @param path
      */
     public void delDir(String path)...{
         File dir=new File(path);
         if(dir.exists())...{
             File[] tmp=dir.listFiles();
             for(int i=0;i<tmp.length;i++)...{
                 if(tmp[i].isDirectory())...{
                     delDir(path+"/"+tmp[i].getName());
                 }
                 else...{
                     tmp[i].delete();
                 }
             }
             dir.delete();
         }
     }
分享到:
评论

相关推荐

    Java文件转换为 Exe 可执行文件

    可执行程序能够自动从“注册表”或“JAVA_HOME环境变量” 找到当前操作系统中所安装的 jre 环境。 3.2 配置运行环境 如果 jre 文件夹采用复制方式,随同可执行文件一起发布,那么可以添加配置文件进行配置。 配置...

    Java的文件比较工具

    内容概要: 这段代码是一个复杂的Java工具,名为 "FileComparator",用于比较两个文本文件的内容,找出差异并报告差异信息。 适用人群: 适用于需要在不同文本文件之间进行内容比较的程序员、开发人员、测试人员和...

    Java虚拟机规范(Java SE 7)中文版

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈异常处理、同步与注解等。第4章深入分析了用来表示编译后的类和接口的...

    【带书签】Java虚拟机规范(Java SE 7).pdf

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈异常处理、同步与注解等。第4章深入分析了用来表示编译后的类和接口的...

    java快捷键找源码-FileHeader:一个强大的SublimeText文件模板插件

    或其他插件自动检测新文件操作。 将标题添加到现有文件或目录。 批量添加头文件到指定目录下的文件。 自动更新文件上次修改时间和上次修改者。 自动检测文件类型。 强大的模板与 . 支持自定义模板。 支持丰富的语言...

    java虚拟机规范 jdk8.

     深入分析用来表示编译后的类和接口的class文件格式,主要包括ClassFile文件结构、描述符、常量池、字段、方法、属性、格式检查、代码约束与class文件校验等。  定义Java虚拟机启动以及类和接口的加载、链接和初始...

    Java课程实验 Spring Boot 文件上传与下载(源代码+实验报告)

    控制器可以使用@PostMapping注解来处理POST请求,并使用@RequestParam("file")来接收上传的文件 3.创建文件上传的表单: 创建一个HTML表单用于上传文件。在表单中使用enctype="multipart/form-data"属性来指定文件...

    Java7虚拟机规范(高清带目录)

    第3章详述如何将Java语言编写的程序转换为Java虚拟机指令集,涉及常量、局部变量、控制结构、算术运算、参数接收、方法调用、数组、操作数栈异常处理、同步与注解等。第4章深入分析了用来表示编译后的类和接口的...

    其他类别JSP Explorer 文件浏览器 v1.0-fileexplorer.rar

    除了基本的文件管理功能外,JSP Explorer 文件浏览器还具备一些高级特性,如文件的批量操作、权限控制、文件类型过滤等。这些特性使得用户可以更加高效地管理和组织自己的文件,同时也提高了系统的安全性和可靠性。...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及流程控制等等,其中等6章和附录a-c完全可以作为class文件和指令含集的参考手册。本书还附带...

    Java开发详解.zip

    031201_【第12章:JAVA IO】_File类笔记.pdf 031202_【第12章:JAVA IO】_RandomAccessFile笔记.pdf 031203_【第12章:JAVA IO】_字节流与字符流笔记.pdf 031204_【第12章:JAVA IO】_字节-字符转换流笔记.pdf ...

    Java 11 / JDK 11 下载

    330: Launch Single-File Source-Code Programs(启动单个 Java 源代码文件的程序) 331: Low-Overhead Heap Profiling(低开销的堆分配采样方法) 332: Transport Layer Security (TLS) 1.3(对 TLS 1.3 的支持) ...

    Java 基础核心总结 +经典算法大全.rar

    BIO 和 NIO 拷贝文件的区别操作系统的零拷贝 选择器(Selectors) 选择键(SelectionKey) 示例:简易的客户端服务器通信 集合 集合框架总览 -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系...

    Java 2平台安全技术-结构,API设计和实现

    3.6.4 java.io.FilePermission 31 3.6.5 java.net.SocketPermission 33 3.6.6 java.security.BasicPermission 35 3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt....

    JAVA语言程序设计【高清版】.pdf

    23 3.3.3 变量的说明和赋值 28 习题 30 第4章 表达式和流程控制语句 31 4.1 表达式 31 4.1.1 操作数和运算符 31 4.1.2 表达式的提升和类型转换 40 4.2 流程控制语句 43 4.2.1 表达式语句 43 4.2.2 ...

    深入Java虚拟机

    1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计语言 1.4 Java体系结构的代价 1.5 结论 1.6 资源页 第2章 平台无关 2.1 为什么要平台无关 2.2 Java的体系结构对平台无关的支持 2.2.1...

    java 面试题 总结

    静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面&lt;%@ include file="included.htm" %&gt; 23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...

    java初学者必看

    14.2 文件操作 14.2.1 File类 14.2.2 File类应用 14.2.3 RandomAccessFile类 14.2.4 RandomAccessFile应用 14.3 字节流InputStream、OutputStream 14.3.1 字节输入、输出流 14.3.2 字节文件输入、输出流 ...

    JAVA基础课程讲义

    第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用...

Global site tag (gtag.js) - Google Analytics