Java IO 之File操作

一.File中的两个常量分隔符

package File;

import java.io.File;

/**
 * 两个常量
 * 1、路径分隔符  ;
 * 2、名称分隔符     \ (windows)    /(linux等)
 */
@SuppressWarnings("all")
public class Demo01 {
    public static void main(String[] args) {
        System.out.println(File.pathSeparator);
        System.out.println(File.separator);
        //路径表示形式
        String path = "E:\\xp\\test\\2.jpg"; //不推荐
        //适合动态生成时使用
        path = "E:"+File.pathSeparator+"win7"+File.separator+"test"+File.separator+"2.jpg";
        path = "E:/win7/test/2.jpg";//推荐使用
    }
}

运行结果:

;
\

二.相对路径与绝对路径

package File;

import java.io.File;

/**
 * 相对路径与绝对路径 构造File对象
 * 1.相对路径
 *    File(String parent,String child) ==>File("E:/xp/test","2.jpg");
 *    File(File parent,String child)  ==>File(new File("E:/xp/test"),"2.jpg");
 * 2.绝对路径
 *    src = new File("E:/xp/test/2.jpg");
 *
 *  getName()  返回名称
 *  getPath()  如果是绝对的,返回绝对路径;如果是相对的,返回相对路径。
 *  getAbsolutePath()  返回绝对路径
 */

public class Demo02 {
    public static void main(String[] args) {
        String parentPath = "E:/xp/test";
        String name = "2.jpg";
        //相对路径
        File   src = new File(parentPath,name);
        //src = new File(new File(parentPath),name);
        //输出
        System.out.println(src.getName());
        System.out.println(src.getPath());
        System.out.println("-------------");
        //绝对路径
        src = new File("E:/xp/test/2.jpg");
        System.out.println(src.getName());
        System.out.println(src.getPath());
        System.out.println("-------------");
        //没有盘符,一user.dir构建
        src= new File("test.txt");
        //src= new File(".");//当前路径,通过这种方式可以找到当前工作空间路径。
        System.out.println(src.getName());//返回名称
        System.out.println(src.getPath());//如果是绝对的,返回绝对路径;如果是相对的,返回相对路径。
        System.out.println(src.getAbsolutePath());
    }
}

运行结果:

2.jpg
E:\xp\test\2.jpg
-------------
2.jpg
E:\xp\test\2.jpg
-------------
test.txt
test.txt
G:\program\javase\IOFile\test.txt

三.File的常用方法

package File;

import java.io.File;
import java.io.IOException;
/**
 * 常用方法
 * 1、文件名
 *      getName() 文件名、路径名
 *      getPath()  路径名
 *      getAbsoluteFile() 绝对路径所对应的File对象
 *      getAbsolutePath() 绝对路径名
 *      getParent() 返回父目录
 *
 * 2、判断信息
 *      exists()
 *      canWrite()
 *      canRead()
 *      isFile()
 *      isDirectory()
 *      isAbsolute()   消除平台差异,如以盘符开头,其他以/开头
 * 3、长度(字节数) 不能读取文件夹的长度
 *
 * 4、创建、删除文件
 *      createNewFile  创建新文件,如果不存在,进行创建;如果存在,返回false。
 *      临时文件
 */

@SuppressWarnings("all")
public class Demo03 {
    public static void main(String[] args) {
        test01();
        System.out.println("========");
        test02();
        System.out.println("========");
        try {
            test03();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件操作失败");
        }
    }

    //1、获取文件名称
    public static void test01()
    {
        //File src = new File("E:/xp/test/2.jpg");
        File src = new File("test/2.txt");
        System.out.println(src.getName());//名称
        //如果是绝对路径,返回完整路径,否则相对路径
        System.out.println(src.getPath());
        //返回绝对路径
        System.out.println(src.getAbsolutePath());
        //返回上一级目录,如果是相对路径,可能返回null;如new File("2.txt");
        System.out.println(src.getParent());
    }

    //2、判断信息    读取相关信息,不是读取内容,而是位置,大小,占用空间,创建时间等属性
    public static void test02()
    {
        //String path = "2.txt";
        String path = "G:/love.txt";
        File src = new File(path);
        System.out.println("文件是否存在:"+src.exists());
        //是否可读写
        System.out.println("文件是否可写:"+src.canWrite());
        //isFile()、isDirectory()
        if(src.isFile())
        {
            System.out.println("文件");
        }
        else if(src.isDirectory()) {
            System.out.println("文件夹");
        }
        else {
            System.out.println("文件不存在");
        }
        System.out.println("是否为绝对路径:"+src.isAbsolute());
        System.out.println("长度为:"+src.length());//这个长度是字节数
    }

    //3、创建,删除文件
    public static void test03() throws IOException
    {
        //创建文件
        //con 系统关键字,不能创建成功。
        String path = "F:/100.txt";
        File src = new File(path);
        if(!src.exists())
        {
            boolean flag = src.createNewFile();
            System.out.println(flag?"创建成功":"创建失败");
        }

        //删除文件
        boolean flag = src.delete();
        System.out.println(flag?"删除成功":"删除失败");

        //static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
        //static createTempFile(前缀3个字节长,后缀默认.temp,目录)
        File temp = File.createTempFile("tes", ".temp",new File("G:/"));
        try {
            Thread.sleep(2000);
            temp.deleteOnExit();//退出即删除
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

2.txt
test\2.txt
G:\program\javase\IOFile\test\2.txt
test
========
文件是否存在:true
文件是否可写:true
文件
是否为绝对路径:true
长度为:32
========
创建成功
删除成功

四.创建目录

package File;

import java.io.File;
import java.io.FilenameFilter;
/**
 *  创建目录
 *  mkdir() 创建目录  必需确保父目录存在,如果不存在,创建失败。
 *  mkdirs() 创建目录  如果父目录链不存在,一同创建。
 *  String[] list()  文件|目录名   字符串形式
 *  File[] listFiles()  文件|目录名   File对象形式
 *  File[] listFiles(FilenameFilter filter)  过滤
 */

@SuppressWarnings("all")
public class Demo04 {
    public static void main(String[] args) {
        test01();
        test02();
    }

    public static void test01()
    {
        String path = "G:/try/123/123/325";
        File src = new File(path);
        //src.mkdir();
        src.mkdirs();
        System.out.println("创建成功。");
    }
    public static void test02()
    {
        //String path = "G:/try/123";
        String path = "G:/work";
        File src = new File(path);//文件夹
        if(src.isDirectory())//存在并且为目录
        {
            System.out.println("======子目录|子文件名 《字符串的表现形式》======");
            String[] subNames = src.list();
            for(String temp:subNames)
            {
                System.out.println(temp);
            }

            System.out.println("====子目录|子文件 《File对象》=====");
            File[]  subFiles = src.listFiles();
            for(File temp:subFiles )
            {
                System.out.println(temp.getAbsolutePath());
            }

            System.out.println("======子文件,Java对象======");
            //命令设计模式
            subFiles = src.listFiles(new FilenameFilter() {
                /**
                 * dir代表src
                 */
                @Override
                public boolean accept(File dir, String name) {
                    //System.out.println(dir.getName());
                    //System.out.println(dir.getAbsolutePath());
                    //必须是文件且后缀是.java
                    return  new File (dir,name).isFile()&&name.endsWith(".rar");
                }
            });
            for(File temp:subFiles)
            {
                System.out.println(temp.getAbsolutePath());
            }
        }
    }
}

运行结果:

创建成功。
======子目录|子文件名======
123
324
dsafds.java
sdafd.java
新建文件夹 (3)
新建文件夹 (4)
====子目录|子文件File对象=====
G:\try\123\123
G:\try\123\324
G:\try\123\dsafds.java
G:\try\123\sdafd.java
G:\try\123\新建文件夹 (3)
G:\try\123\新建文件夹 (4)
======子文件,Java对象======
G:\try\123\dsafds.java
G:\try\123\sdafd.java

五.输出子孙级目录或文件的名称

package File;

import java.io.File;
import java.util.Arrays;

/**
 * 输出子孙级目录|文件的名称
 * 1、listFile()
 * 2、递归
 *
 * static listRoots() 根路径
 * @author liguodong
 */
public class Demo05 {
    public static void main(String[] args) {
        String path = "G:/try/123";
        File parent = new File(path);
        printName(parent);
        System.out.println("----------");
        File[] roots = File.listRoots();
        System.out.println(Arrays.toString(roots));
    }

    public static void printName(File src){
        if(null==src||!src.exists()){
            return;
        }
        System.out.println(src.getAbsolutePath());
        if(src.isDirectory()){
            for(File sub:src.listFiles()){
                printName(sub);
            }
        }
    }
}

运行结果:

G:\try\123
G:\try\123\123
G:\try\123\123\325
G:\try\123\432
G:\try\123\432\1.txt
G:\try\123\432\2.txt
G:\try\123\432\3.txt
G:\try\123\4344
----------
[C:\, D:\, E:\, F:\, G:\, H:\, K:\]
时间: 2024-10-13 04:54:40

Java IO 之File操作的相关文章

Java—IO流 File类的常用API

File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOException; public class Demo16 { public static void main(String[] args) { File file = new File("F:\\javaio"); //文件(目录)是否存在 if(!file.exists()) { //

java IO整理-File

File类 File 类是jam-io 包下代表与平台无关的文件和目录,也就是说如果希望在程序中操作文件和目录都可以通过File 类来完成,值得指出的是不管是文件.还是目录都是使用File 来操作的, File 能新建.删除和重命名文件和目录, File 不能访问文件内容本身.如果需要访问文件内容本身,则需要使用输入/输出流. 通过File类可以很方便的操纵文件夹和文件,下面是我写的一个递归程序,能够按层次打印出文件夹的内容,并且通过文件过滤器只输出目录和.exe文件. package File

java io包File类

1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对象文件. file类的几个常用方法:file.canRead() boolean ,file.canWrite() boolean,file.canExecute() boolean,file.createNewFile() boolean.(1)file.createNewFile() boole

JavaLearning:JAVA IO 之内存操作流

package org.fun.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteArrayDemo { public static void main(String[] args) { String str = "helloworld";// 定义字符串,全部由小写字母组成 ByteArrayOutputStream bos = null;//

Storm java.io.FileNotFoundException: File '../stormconf.ser' does not exist

This bug will kill supervisors Affects Version/s: 0.9.2-incubating, 0.9.3, 0.9.4 Fix Version/s: 0.10.0, 0.9.5 问题背景 最近发现刚搭起的Storm集群,没过多久,Supervisor 便悄然死去了一大半.查看死去Supervisor的log,发现java.io.FileNotFoundException: File '../stormconf.ser' does not exist异常.

关于spark入门报错 java.io.FileNotFoundException: File file:/home/dummy/spark_log/file1.txt does not exist

不想看废话的可以直接拉到最底看总结 废话开始: master: master主机存在文件,却报 执行spark-shell语句:  ./spark-shell  --master spark://master:7077 --executor-memory 1G --total-executor-cores 2 报错:WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, slave02): java.io.FileNotFoundExcep

探究java IO之File类

尽管java.io定义的大多数类用于操作流,但File类却不是.File类直接处理文件和文件系统.也就是说,File类没有指定如何从文件检索信息以及如何向文件中存储信息,而是描述了文件本身的属性.File对象用于获取和操作与磁盘文件关联的信息,例如权限,时间日期以及目录路径,并且还可以浏览子目录层次. 注意:由JDK7为NIO系统增加的Path接口和File类,在许多情况下都为File类提供了强大的替换方案,具体看后面的NIO章节. 下面的构造函数可以用于创建File对象: File(Strin

对java IO,NIO简单操作

对 IO,NIO的简单操作,详细看如下代码 1.InputStream,OutputStream是对字节流的操作,Reader,Writer是对字符的操作 2.对大文件的拷贝使用RandomAccessFile类和NIO 1 import java.io.*; 2 import java.nio.ByteBuffer; 3 import java.nio.channels.FileChannel; 4 5 public class IOWriteRead { 6 7 public static

Java IO 之 File 的创建、重命名与遍历

File表示存储设备上的一个文件或目录,使用方式查看API即可,比较简单 1 package org.zln.io.file; 2 3 import java.io.File; 4 5 /** 6 * Created by coolkid on 2015/6/21 0021. 7 */ 8 public class TestFile { 9 /*当前程序根路径*/ 10 public static final String rootPath = System.getProperty("user.