转载自博客:https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F

本文通过大量的示例,介绍和讲解了Java File操作。

1)创建文件 2)删除文件 3)判断文件是否存在 4)创建文件夹 5)文件类型判断 6)获取文件信息

7)获取目录下文件名 8)递归打印所有文件名 9)递归删除整个文件夹 10)Properties类

11)SequenceInputStream类:连接多个流 12)对象序列化实现Serializable接口 13)管道流

14)RandomAccessFile类 15)DataStream类 16)ByteArrayStream类

1、创建文件

1)boolean java.io.File.createNewFile() throws IOException用来创建文件,如果文件存在,创建失败,返回false;

2)new File("a.txt");并不创建文件实体,只是创建一个指向“a.txt”的引用。

3)路径分隔符:File.separator

import java.io.File;

public class FileDemo {

public static void main(String[] args) {
//new File()就相当于是C语言中定义一个指向“a.txt”的文件指针
File f1 = new File("a.txt");
try
{
//创建文件:boolean java.io.File.createNewFile() throws IOException
boolean b = f1.createNewFile();
//第二次将会创建失败false,这里和流不一样
System.out.println(b);
}
catch (Exception e)
{
// TODO: handle exception
}
//目录分隔符:File.separator,相当于“\\”跨平台。
//File f2 = new File("E:\\tmp","b.txt");
File f2 = new File("E:"+File.separator+"tmp","b.txt");
System.out.println(f2);
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {
//new File()就相当于是C语言中定义一个指向“a.txt”的文件指针
File f1 = new File("a.txt");
try
{
//创建文件:boolean java.io.File.createNewFile() throws IOException
boolean b = f1.createNewFile();
//第二次将会创建失败false,这里和流不一样
System.out.println(b);
}
catch (Exception e)
{
// TODO: handle exception
}
//目录分隔符:File.separator,相当于“\\”跨平台。
//File f2 = new File("E:\\tmp","b.txt");
File f2 = new File("E:"+File.separator+"tmp","b.txt");
System.out.println(f2);
}

}

2、删除文件

1)delete():删除文件成功返回true,删除失败返回false( boolean java.io.File.delete() )

2)deleteOnExit():程序退出时,自动删除文件。一般用于对程序创建的临时文件进行操作,退出时删除。( void java.io.File.deleteOnExit() )

[java] view plain copy print?package file.dol.sn;

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File f1 = new File("a.txt");
try
{
boolean b = f1.createNewFile();
//删除文件:boolean java.io.File.delete()
f1.delete();
//程序退出时,自动删除:void java.io.File.deleteOnExit()
//f1.deleteOnExit();
}
catch (Exception e)
{
// TODO: handle exception
}
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File f1 = new File("a.txt");
try
{
boolean b = f1.createNewFile();
//删除文件:boolean java.io.File.delete()
f1.delete();
//程序退出时,自动删除:void java.io.File.deleteOnExit()
//f1.deleteOnExit();
}
catch (Exception e)
{
// TODO: handle exception
}
}

}3、判断文件是否存在

exists():判断文件是否存在( boolean java.io.File.exists() )

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File f1 = new File("not.txt");
//判断文件是否存在:boolean java.io.File.exists()
boolean b = f1.exists();
System.out.println(b);
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File f1 = new File("not.txt");
//判断文件是否存在:boolean java.io.File.exists()
boolean b = f1.exists();
System.out.println(b);
}

}4、创建文件夹

1)mkdir():只能创建“一级目录”(boolean java.io.File.mkdir());

2)mkdirs():可以创建多级目录(boolean java.io.File.mkdirs())。

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File dir1 = new File("abc");
File dir2 = new File("a\\b\\c\\d");
try
{
//创建文件目录(即文件夹):boolean java.io.File.mkdir()
//该方法只能创建“一级”目录
boolean b = dir1.mkdir();
System.out.println(b);
//创建多级文件夹:boolean java.io.File.mkdirs()
b = dir2.mkdirs();
System.out.println(b);
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File dir1 = new File("abc");
File dir2 = new File("a\\b\\c\\d");
try
{
//创建文件目录(即文件夹):boolean java.io.File.mkdir()
//该方法只能创建“一级”目录
boolean b = dir1.mkdir();
System.out.println(b);
//创建多级文件夹:boolean java.io.File.mkdirs()
b = dir2.mkdirs();
System.out.println(b);
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}5、文件类型判断

1)exists():判断文件是否存在,注意:一定要先判断这个;

2)isDirectory():判断是否为文件夹;

3)isFile():判断是否为文件;

4)isHidden():判断是否为隐藏文件;

5)isAbsolute():判断是否为绝对路径,这里不管文件是否存在都能判断。

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File f = new File("C:\\abc.txt");
try
{
//判断文件是否存在
if (f.exists())
{
//判断文件是否是文件夹
if (f.isDirectory())
{
System.out.println("文件夹");
}
//判断文件是否是文件
if (f.isFile())
{
System.out.println("文件");
}
//判断是否为隐藏文件
if (f.isHidden())
{
System.out.println("隐藏文件");
}
}
else
{
System.out.println("文件不存在");
}
//判断是否为绝对路径,不管文件是否存在
if (f.isAbsolute())
{
System.out.println("是绝对路径");
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File f = new File("C:\\abc.txt");
try
{
//判断文件是否存在
if (f.exists())
{
//判断文件是否是文件夹
if (f.isDirectory())
{
System.out.println("文件夹");
}
//判断文件是否是文件
if (f.isFile())
{
System.out.println("文件");
}
//判断是否为隐藏文件
if (f.isHidden())
{
System.out.println("隐藏文件");
}
}
else
{
System.out.println("文件不存在");
}
//判断是否为绝对路径,不管文件是否存在
if (f.isAbsolute())
{
System.out.println("是绝对路径");
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}6、获取文件信息

1)getName():获取文件名;

2)getParent():获取文件父目录;

3)getPath():获取文件路径;

4)getAbsolutePath():获取文件绝对路径;

5)lastModified():获得文件最后一次被修改的时间;

6)length():获取文件大小;

7)renameTo():文件剪切,将文件f1剪切然后粘贴到f2(相当于右键f1->剪切->粘贴->f2所在目录)

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File f1 = new File("abc.txt");
File f2 = new File("E:\\Java\\test.txt");
try
{
//获得文件名
System.out.println(f1.getName());
//获得绝对路径中的父目录,如:File("abc.txt")则该返回为null
System.out.println(f1.getParent());
//获得相对路径
System.out.println(f1.getPath());
//获得绝对路径
System.out.println(f1.getAbsolutePath());
//获得文件最后一次被修改的时间
System.out.println(f1.lastModified());
//获得文件大小
System.out.println(f1.length());
//文件剪切,将文件f1剪切然后粘贴到f2(相当于右键f1->剪切->粘贴->f2所在目录)
f1.renameTo(f2);
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File f1 = new File("abc.txt");
File f2 = new File("E:\\Java\\test.txt");
try
{
//获得文件名
System.out.println(f1.getName());
//获得绝对路径中的父目录,如:File("abc.txt")则该返回为null
System.out.println(f1.getParent());
//获得相对路径
System.out.println(f1.getPath());
//获得绝对路径
System.out.println(f1.getAbsolutePath());
//获得文件最后一次被修改的时间
System.out.println(f1.lastModified());
//获得文件大小
System.out.println(f1.length());
//文件剪切,将文件f1剪切然后粘贴到f2(相当于右键f1->剪切->粘贴->f2所在目录)
f1.renameTo(f2);
}
catch (Exception e)
{
System.out.println(e.toString());
}
}

}7、获取目录下文件名

1)listRoots():获取系统盘符;

2)list():获取“X:\”目录下的所有文件名,包括隐藏文件和文件夹(调用list()方法时,必须先封装一个目录,且必须存在的目录。)

3)list(FilenameFilter filter):列出文件名的时候,可以进行过滤操作(如:列出后缀名为.txt的文件)。

4)listFiles():列出目录下文件名,不包括文件夹。

import java.io.File;

import java.io.FilenameFilter;

public class FileDemo {

public static void main(String[] args) {
//1.获得系统有效盘符
File[] files = File.listRoots();
for (File f : files)
System.out.println(f.toString());
System.out.println("——————————————————————");
//2.获得C:\\目录下的所有文件名,包括隐藏文件和文件夹
//调用list()方法时,必须先封装一个目录,且必须存在的目录。
File fnFile = new File("C:\\");
String[] strings = fnFile.list();
for (String s : strings)
System.out.println(s);
System.out.println("——————————————————————");
//3.调用list()方法,列出后缀名为.txt的文件
strings = fnFile.list(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
//找出后缀名为.txt的文件名
return name.endsWith(".txt");
}
});
for (String s : strings)
System.out.println(s);
System.out.println("——————————————————————");
//4.获取C:\\目录下的文件夹,不包括文件夹
files = fnFile.listFiles();
for (File f : files)
System.out.println(f.toString());
}

}

import java.io.File;

import java.io.FilenameFilter;

public class FileDemo {

public static void main(String[] args) {
//1.获得系统有效盘符
File[] files = File.listRoots();
for (File f : files)
System.out.println(f.toString());
System.out.println("——————————————————————");
//2.获得C:\\目录下的所有文件名,包括隐藏文件和文件夹
//调用list()方法时,必须先封装一个目录,且必须存在的目录。
File fnFile = new File("C:\\");
String[] strings = fnFile.list();
for (String s : strings)
System.out.println(s);
System.out.println("——————————————————————");
//3.调用list()方法,列出后缀名为.txt的文件
strings = fnFile.list(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
//找出后缀名为.txt的文件名
return name.endsWith(".txt");
}
});
for (String s : strings)
System.out.println(s);
System.out.println("——————————————————————");
//4.获取C:\\目录下的文件夹,不包括文件夹
files = fnFile.listFiles();
for (File f : files)
System.out.println(f.toString());
}

}8、递归打印所有文件名

注意:测试中,有些隐藏文件名不能访问还是其他的原因,当在打印根目录(如:"C:\")下的所有文件名时,会有个叫“System Volume Information”的隐藏文件夹,访问失败,所以以下代码中,不访问隐藏文件。

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File dirFile = new File("E:\\Dol");
showDir(dirFile,0);
}
public static void showDir(File dir,int level)
{
System.out.println(printSpace(level)+"文件夹:"+dir.getName());
level += 4;
File[] file = dir.listFiles();
for (File f : file)
{
//递归进入所有非隐藏文件夹
if (f.isDirectory() && !f.isHidden())
showDir(f,level);
//打印文件名
else
System.out.println(printSpace(level)+f.getName());
}
}
//实现分层次打印,补充空格
public static StringBuffer printSpace(int level)
{
StringBuffer space = new StringBuffer();
for (int i = 0; i < level; ++i)
{
space.append(" ");
}
return space;
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File dirFile = new File("E:\\Dol");
showDir(dirFile,0);
}
public static void showDir(File dir,int level)
{
System.out.println(printSpace(level)+"文件夹:"+dir.getName());
level += 4;
File[] file = dir.listFiles();
for (File f : file)
{
//递归进入所有非隐藏文件夹
if (f.isDirectory() && !f.isHidden())
showDir(f,level);
//打印文件名
else
System.out.println(printSpace(level)+f.getName());
}
}
//实现分层次打印,补充空格
public static StringBuffer printSpace(int level)
{
StringBuffer space = new StringBuffer();
for (int i = 0; i < level; ++i)
{
space.append(" ");
}
return space;
}

}9、递归删除整个文件夹

import java.io.File;

public class FileDemo {

public static void main(String[] args) {  

    File dirFile = new File("E:\\Dol");
deleteDir(dirFile,0);
}
public static void deleteDir(File dir,int level)
{
File[] file = dir.listFiles();
//循环递归删除文件夹里面的所有内容
for (File f : file)
{
//递归进入所有非隐藏文件夹
if (f.isDirectory() && !f.isHidden())
deleteDir(f,level);
//删除文件
else
{
f.delete();
System.out.println(f.getName()+"——已删除");
}
}
//删除该文件夹
dir.delete();
System.out.println(dir.getName()+"——已删除");
}

}

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

	File dirFile = new File("E:\\Dol");
deleteDir(dirFile,0);
}
public static void deleteDir(File dir,int level)
{
File[] file = dir.listFiles();
//循环递归删除文件夹里面的所有内容
for (File f : file)
{
//递归进入所有非隐藏文件夹
if (f.isDirectory() && !f.isHidden())
deleteDir(f,level);
//删除文件
else
{
f.delete();
System.out.println(f.getName()+"——已删除");
}
}
//删除该文件夹
dir.delete();
System.out.println(dir.getName()+"——已删除");
}

}10、Properties类

1)常用的基本操作,设置键值,获取值。

import java.util.Properties;

import java.util.Set;

public class FileDemo {

public static void main(String[] args) {
//Properties是HashTable的子类,里面存放的都是键值对的字符串
Properties prop = new Properties();
//设置键值
prop.setProperty("Dolphin", "海豚");
prop.setProperty("Dol", "CSDN");
//获取
String value = prop.getProperty("Dolphin");
System.out.println("@@@@value@@@@"+value); //返回一个集合
Set<String> nameSet = prop.stringPropertyNames();
for (String s : nameSet)
{
System.out.println(s+":"+prop.getProperty(s));
}
}

}

import java.util.Properties;

import java.util.Set;

public class FileDemo {

public static void main(String[] args) {
//Properties是HashTable的子类,里面存放的都是键值对的字符串
Properties prop = new Properties();
//设置键值
prop.setProperty("Dolphin", "海豚");
prop.setProperty("Dol", "CSDN");
//获取
String value = prop.getProperty("Dolphin");
System.out.println("@@@@value@@@@"+value); //返回一个集合
Set<String> nameSet = prop.stringPropertyNames();
for (String s : nameSet)
{
System.out.println(s+":"+prop.getProperty(s));
}
}

}

2)读取配置文件

读取配置文件,并对配置文件进行修改,修改后再保存。

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Properties;

public class FileDemo {

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

    Properties prop = new Properties();
//Properties加载的文件必须为键值对,#注释的不会被加载
FileInputStream fis = new FileInputStream("pz.txt");
prop.load(fis);
//添加一个键值对
prop.setProperty("Dol", "123");
//对键值对进行修改
prop.setProperty("Dol", "321");
FileOutputStream fos = new FileOutputStream("pz.txt");
//保存配置文件
//void java.util.Properties.store(OutputStream arg0, String arg1) throws IOException
//第二个参数为注释,可写可不写,写入时会自动添加#
prop.store(fos, "comment"); prop.list(System.out);
fis.close();
fos.close();
}

}

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Properties;

public class FileDemo {

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

	Properties prop = new Properties();
//Properties加载的文件必须为键值对,#注释的不会被加载
FileInputStream fis = new FileInputStream("pz.txt");
prop.load(fis);
//添加一个键值对
prop.setProperty("Dol", "123");
//对键值对进行修改
prop.setProperty("Dol", "321");
FileOutputStream fos = new FileOutputStream("pz.txt");
//保存配置文件
//void java.util.Properties.store(OutputStream arg0, String arg1) throws IOException
//第二个参数为注释,可写可不写,写入时会自动添加#
prop.store(fos, "comment"); prop.list(System.out);
fis.close();
fos.close();
}

}

11、SequenceInputStream类:连接多个流

说明:Enumeration(列举)

public interface Enumeration实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。

例如,要输出 Vector v 的所有元素,可使用以下方法:

for (Enumeration e = v.elements(); e.hasMoreElements()

【转载】Java File操作汇总的更多相关文章

  1. 【转载】appium 操作汇总

    '''.appium api第二弹 锋利的python,这是初稿,2015/1/5 如有错误的地方,请同学们进行留言,我会及时予以修改,尽量整合一份ok的api 作者:Mads Spiral QQ:7 ...

  2. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  3. Java路径操作具体解释

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ...

  4. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  5. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  6. Java 文件操作-File

    1.File文件操作 java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录.File类只用于表示文件(目录)的信息(名称.大小等),不能对文件的 ...

  7. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  8. 14、Java文件操作stream、File、IO

    1.文件操作涉及到的基本概念 File File类 是文件操作的主要对象中文意义就是 文件 顾名思意 万物皆文件,在计算上看到的所有东西都是文件保存,不管是你的图片.视频.数据库数据等等都是按照基本的 ...

  9. Java文件File操作一:文件的创建和删除

    一.简述 File 文件类,主要对文件进行相关操作.常用的File操作有:文件(夹)的创建.文件(夹)的删除,文件的读入和下载(复制)等: 二.文件(夹)的创建和删除 1.创建过程 实例: //cre ...

随机推荐

  1. 【.NET】CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\d29b5393\123c3a1c\App_Code.odl3w4o6.dll”--“拒绝访问。 ”

    IIS部署网站或者Webservice时,出现以下问题: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Tempor ...

  2. 继承以及Super

    一个小小的总结,主要关注以下三个问题:ES5的继承方式,ES5的继承与ES6的继承的区别,ES6的super的几种使用方式以及其中this的指向. From http://supermaryy.com ...

  3. Win10无线网络配置VMware的nat网络

    1.在windows上用运行cmd,用ipconfig /all查看可用网络的dns服务器 2.配置VMnet8,其dns与本地的dns服务器相同 3.打开VMware Workstation 的编辑 ...

  4. Ubuntu下借助URLOS实现快速安装DzzOffice企业办公套件

    如今,越来越多的个人.团队甚至企业都在使用GSuite或者Office365等网络办公套件,为什么人们越来越喜爱使用网络办公套件?一方面是考虑数字资产的安全性以及管理效率,另一方面则是日益增大的协同办 ...

  5. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

  6. hbase的hue部署和使用

    1.组件版本信息 zookeeper hadoop hbase     hue           zookeeper-3.4.12 hadoop-3.0.3 hbase-2.1.5 4.4.0 2. ...

  7. 通过java 来实现对多个文件的内容合并到一个文件中

    现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...

  8. redis在php中实际应用-list

    1.LPUSH Redis Lpush 命令将一个或多个值插入到列表头部. 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作. 当 key 存在但不是列表类型时,返回一个错误.(在Re ...

  9. python面向对象反射-框架原理-动态导入-元类-自定义类-单例模式-项目的生命周期-05

    反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反 ...

  10. python使用Flask作为MockServer的方法

    日常开发/测试过程中,需要对相关服务添加挡板--Mock 简单介绍一下使用python的Flask插件,对相关的服务进行Mock # coding:utf-8 import os from flask ...