[J2EE]java本地文件操作

简介: 一、File类简介在java中所有的事务都是对象,文件也不例外,java中使用File类表示文件(包括文件和文件夹).二、文件的创建、删除、重命名2.1文件创建首先创建一个File对象f1, 传入的string参数为文件名,然后使用createNewFile()方法即可创建该文件,文件创建成功createNewFile()方法会返回true,创建失败会返回false.如果文件已经存在会创建失败,可用exists() 方法检测文件是否存在。

一、File类简介

在java中所有的事务都是对象,文件也不例外,java中使用File类表示文件(包括文件和文件夹).

二、文件的创建、删除、重命名

2.1文件创建

首先创建一个File对象f1, 传入的string参数为文件名,然后使用createNewFile()方法即可创建该文件,文件创建成功createNewFile()方法会返回true,创建失败会返回false.如果文件已经存在会创建失败,可用exists() 方法检测文件是否存在。

package ucas.file.test;

import java.io.File;
import java.io.IOException;

public class FileDemo01 {
    public static void main(String[] args) {
        File f1 = new File("Test.txt");
        try {

            if(f1.exists()){
                System.out.println("文件已存在无须创建!");
            }else{
                if (f1.createNewFile()) {
                    System.out.println("文件创建成功!");
                }else{
                    System.out.println("文件创建失败!");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

2.2文件删除

文件删除使用delete()方法。

package ucas.file.test;

import java.io.File;

public class FileDeete {
    public static void main(String[] args) {
        File f1 = new File("Test.txt");
        if (f1.exists() == false) {
            System.out.println("文件不存在,删除失败!");
        } else {

            if (f1.delete()) {
                System.out.println("删除成功!");
            }else{
                System.out.println("删除失败");
            }
        }
    }
}

2.3文件重命名

在src目录下存在一个Test.txt文本文件,修改文件名:

package ucas.file.test;

import java.io.File;
public class FileRename {
    public static void main(String[] args) {
         File f1=new File("src/Test.txt");
         File f2=new File("src/TestTwo.txt");
         f1.renameTo(f2);
    }
}

三、文件夹的创建、删除、重命名

3.1创建文件夹

创建文件夹使用mkdir()方法:

package ucas.file.test;

import java.io.File;

public class FileFolder {
    public static void main(String[] args) {
          File dir1=new File("src/Folder");
          dir1.mkdir();    
    }
}

这样就走src目录下新建了一个Folder文件夹,刷新后可见.
创建文件夹时先判断是否存在,这样更加规范:

package ucas.file.test;

import java.io.File;

public class FileFolder {
    public static void main(String[] args) {
          File dir1=new File("src/Folder");

          if(dir1.exists()){
              System.out.println("文件夹已存在!");
          }else{
              if(dir1.mkdir()){               
                  System.out.println("文件夹创建成功");
              }else{
                  System.out.println("文件夹创建失败");
              }
          }

    }
}

3.2创建多级文件夹

创建含义子文件夹的文件夹使用mkdirs()函数:

File dir1=new File("Folder/one/two");
dir1.mkdirs()

3.3文件夹的删除

删除文件夹使用delete()函数,但是对于非空文件夹不能一次性删除
删除非空文件夹,可以采用递归的思想:

public static void deleteFolder(File dir) {

        File dirFile[] = dir.listFiles();
        for (int i = 0; i < dirFile.length; i++) {
            if (dirFile[i].isDirectory()) {
                deleteFolder(dirFile[i]);
            }
            dirFile[i].delete();
        }
    }

四、文件属性的读取

package ucas.file.demo;

import java.io.File;

public class FileDemo3 {
    public static void main(String[] args) {

        // 文件属性的读取
        File file = new File("text.txt");

        // 判断文件是否存在
        System.out.println("判断文件是否存在:" + file.exists());

        // 读取文件名称
        System.out.println("读取文件名称:" + file.getName());

        // 读取文件路径
        System.out.println("读取文件路径:" + file.getPath());

        // 读取文件绝对路径
        System.out.println("读取文件绝对路径:" + file.getAbsolutePath());

        // 读取文件父级路径
        System.out.println("父级文件路径:" + new File(file.getAbsolutePath()).getParent());

        // 读取文件大小
        System.out.println("文件大小:" + (float) file.length() / 1000 + "Kb");

        // 文件是否被隐藏
        System.out.println("文件是否被隐藏:" + file.isHidden());

        // 文件是否可读
        System.out.println("文件是否可读:" + file.canRead());

        // 文件是否可写
        System.out.println("文件是否可写:" + file.canWrite());

        //判断是否为文件夹
        System.out.println("判断是否为文件夹:"+file.isDirectory());
    }
}

五、文件属性的设置

文件可读、可写、只读方式设置:

           //将文件属性设置为可写:
            file.setWritable(true);

            //将文件属性设置为可读:
            file.setReadable(true);

            //设定文件只读:
            file.setReadOnly();

六、遍历文件夹

package ucas.file.demo;

import java.io.File;

public class FileDemo5 {
    public static void main(String[] args) {

        // 遍历文件夹
        //File dir=new File("/Users/yaopan/Documents");
        File dir=new File("../");
        printFiles(dir,1);

    }

    public static void  printFiles(File dir,int tab){
        if(dir.isDirectory()){
            File next[]=dir.listFiles();
            for (int i = 0; i < next.length; i++) {
                for(int j=0;j<tab;j++){
                    System.out.print("|--");
                }
                System.out.println(next[i].getName());
                if(next[i].isDirectory()){
                    printFiles(next[i],tab+1);

                }
            }
        }else{
            System.out.println("文件路径错误.");
        }
    }
}

输出结果:

|--.classpath
|--.DS_Store
|--.project
|--.settings
|--|--org.eclipse.jdt.core.prefs
|--bin
|--|--.DS_Store
|--|--Folder
|--|--|--one
|--|--|--|--two
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.class
|--|--|--|--|--IteratorDemo.class
|--|--|--|--|--ListDemo.class
|--|--|--|--|--MapDemo01.class
|--|--|--|--|--SetDemo.class
|--|--|--|--|--VectorDemo.class
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.class
|--|--|--|--|--FileDemo2.class
|--|--|--|--|--FileDemo3.class
|--|--|--|--|--FileDemo4.class
|--|--|--|--|--FileDemo5.class
|--|--|--|--|--FileDemo6.class
|--|--|--|--test
|--|--|--|--|--FileDeete.class
|--|--|--|--|--FileDemo01.class
|--|--|--|--|--FileFolder.class
|--|--|--|--|--FileRename.class
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.class
|--My Folder
|--|--two
|--|--|--three
|--src
|--|--.DS_Store
|--|--Folder
|--|--|--1.txt
|--|--|--1副本 2.txt
|--|--|--1副本 3.txt
|--|--|--1副本 4.txt
|--|--|--1副本 5.txt
|--|--|--1副本 6.txt
|--|--|--1副本 7.txt
|--|--|--1副本 8.txt
|--|--|--1副本 9.txt
|--|--|--1副本.txt
|--|--|--one
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.java
|--|--|--|--|--IteratorDemo.java
|--|--|--|--|--ListDemo.java
|--|--|--|--|--MapDemo01.java
|--|--|--|--|--SetDemo.java
|--|--|--|--|--VectorDemo.java
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.java
|--|--|--|--|--FileDemo2.java
|--|--|--|--|--FileDemo3.java
|--|--|--|--|--FileDemo4.java
|--|--|--|--|--FileDemo5.java
|--|--|--|--|--FileDemo6.java
|--|--|--|--test
|--|--|--|--|--FileDeete.java
|--|--|--|--|--FileDemo01.java
|--|--|--|--|--FileFolder.java
|--|--|--|--|--FileRename.java
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.java
|--tangshi.txt
|--tangshi2.txt
|--Test.txt
|--text.txt

七、文件的简单读写

工程目录下放一个tangshi.txt,里面输入文字,读取输出与写入:

package ucas.file.demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class FileDemo6 {
    public static void main(String[] args) {

        // 文件的简单读和写

        File file = new File("tangshi.txt");

        try {
            FileInputStream fis = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
            BufferedReader bfr = new BufferedReader(isr);

            String line;
            while ((line = bfr.readLine()) != null) {
                System.out.println(line);
            }

            bfr.close();
            isr.close();
            fis.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        File file2 = new File("tangshi2.txt");
        try {
            FileOutputStream fos = new FileOutputStream(file2);
            OutputStreamWriter osq = new OutputStreamWriter(fos);
            BufferedWriter bfw = new BufferedWriter(osq);

            bfw.write("登鹳雀楼\n");
            bfw.write("唐 王之涣\n");
            bfw.write("白日依山尽,黄河入海流。\n");
            bfw.write("白日依山尽,黄河入海流。\n");

            bfw.close();
            osq.close();
            fos.close();
            System.out.println("写入完成!");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
目录
相关文章
|
5月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
5月前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
60 4
|
5月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
5月前
|
Java API 开发者
Java中的文件I/O操作详解
Java中的文件I/O操作详解
|
5月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
5月前
|
并行计算 Java 数据挖掘
Java面试题:解释Java中的Stream API及其操作
Java面试题:解释Java中的Stream API及其操作
64 0
|
5月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
5月前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
5月前
|
Java API 开发者
Java中不同I/O操作的性能比较
Java中不同I/O操作的性能比较
下一篇
DataWorks