JAVA基础学习笔记(二)简单文件操作

发布于 / JAVA / 10 条评论

我们来简单说一说如何使用JAVA获取文件路径及一些对文件的一些简单操作(增删改)。


获取文件路径

一、利用System.getProperty()函数获取当前路径

System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径

二、使用File提供的函数获取当前路径:

  • getPath()

返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样

  • getAbsolutePath()

返回的是定义时的路径对应的相对路径,但不会处理“.”“..”的情况。

  • getCanonicalPath():

返回的是规范化的绝对路径,相当于将getAbsolutePath()中的“.”“..”解析成对应的正确的路径。

以程序为例说明:

File file = new File("abb.txt");
System.out.println("-----无'.'或者'..'的相对路径---获取路径不同--");
System.out.println(file.getPath());//相对路径
System.out.println(file.getAbsolutePath());//绝对路径
try
{
    System.out.println(file.getCanonicalPath());//标准路径
}
catch (Exception e)
{
    System.out.println(e.getMessage());
}
System.out.println("-----绝对路径---获取路径相同--");
file = new File("C:\\Users\\Administrator\\IdeaProjects\\test\\abb.txt");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
try{
    System.out.println(file.getCanonicalPath());
}
catch (Exception e)
{
    System.out.println(e.getMessage());
}
System.out.println("-----含'.'的相对路径---获取路径不同--");
file = new File(".\\abb.txt");//与直接写"abb.txt"结果一样
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
try
{
    System.out.println(file.getCanonicalPath());//"."获取当前目录
}
catch (Exception e)
{
    System.out.println(e.getMessage());
}
System.out.println("-----含'..'的相对路径---获取路径不同--");
file = new File("..\\abb.txt");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());//分不清"."和".." 只能当做单纯的"."和".."
try
{
    System.out.println(file.getCanonicalPath());//".."获取当前目录的上一个目录
}
catch (Exception e)
{
    System.out.println(e.getMessage());
}

运行结果如下:

-----无'.'或者'..'的相对路径---获取路径不同--
abb.txt
C:\Users\Administrator\IdeaProjects\test\abb.txt
C:\Users\Administrator\IdeaProjects\test\abb.txt
-----绝对路径---获取路径相同--
C:\Users\Administrator\IdeaProjects\test\abb.txt
C:\Users\Administrator\IdeaProjects\test\abb.txt
C:\Users\Administrator\IdeaProjects\test\abb.txt
-----含'.'的相对路径---获取路径不同--
.\abb.txt
C:\Users\Administrator\IdeaProjects\test\.\abb.txt
C:\Users\Administrator\IdeaProjects\test\abb.txt
-----含'..'的相对路径---获取路径不同--
..\abb.txt
C:\Users\Administrator\IdeaProjects\test\..\abb.txt
C:\Users\Administrator\IdeaProjects\abb.txt

简单的文件操作

一、创建文件夹

import java.io.*;
File myFolderPath = new File(str1);
try {
    if (!myFolderPath.exists())
    {
       myFolderPath.mkdir();//创建单层文件夹
        //myFolderPath.mkdirs(); 创建多层文件夹   例如: "test\\abb\\css"会创建出多层文件夹
    }
}
catch (Exception e)
{
    System.out.println("新建目录操作出错");
    e.printStackTrace()
}

二、创建文件并写入内容(含后缀(.txt||.html))

File myFilePath = new File("abb.html");
        try {
            //创建文件
            if (!myFilePath.exists()) {
                boolean isCreate = myFilePath.createNewFile();
            }
            //写入文件
            FileWriter resultFile = new FileWriter(myFilePath);
            PrintWriter myFile = new PrintWriter(resultFile);
            String Write_content = "新建文件夹成功";  //文件内容
            myFile.println(Write_content);
            myFile.close();
            resultFile.close();
        }
        catch (Exception e) {
            System.out.println("新建文件操作出错");
            e.printStackTrace();
        }

三、删除文件

//import java.io.*;
File myDelFile = new File(str1);
try {
    myDelFile.delete();
}
catch (Exception e) {
    System.out.println("删除文件操作出错");
    e.printStackTrace();
}

四、删除文件夹

//import java.io.*;
File delFolderPath = new File(str1);
try {
    delFolderPath.delete(); //删除空文件夹
}
catch (Exception e) {
    System.out.println("删除文件夹操作出错");
    e.printStackTrace();
}

五、删除一个文件下夹所有的文件夹

//import java.io.*;
File delfile=new File(str1);
File[] files=delfile.listFiles();//返回该文件夹下所有文件的一个列表
for(int i=0;i<files.length;i++){
    if(files[i].isDirectory()){
        files[i].delete();
    }
}

六、清空文件夹

//import java.io.*;
File delfilefolder=new File(str1);
try {
    if (!delfilefolder.exists()) {
        delfilefolder.delete();
    }
    delfilefolder.mkdir();
}
catch (Exception e) {
    System.out.println("清空目录操作出错");
    e.printStackTrace();
}

七、写入文件

//import java.io.*;
// 将数据写入文件
try {
    FileWriter fw = new FileWriter(str1);
    fw.write(str2);
    fw.flush();
    fw.close();
} 
catch (IOException e) {
    e.printStackTrace();
}

八、读取文件

//import java.io.*;
// 逐行读取数据
try {
    FileReader fr = new FileReader("abb.html");
    BufferedReader br = new BufferedReader(fr);
    String str2 = br.readLine();
    while (str2 != null) {
        System.out.println(str2);
        str2 = br.readLine();
    }
    br.close();
    fr.close();
}
catch (Exception e)
{
    System.out.println(e.getStackTrace());
}

有关JAVA文件操作的一些知识就先说到这里了,有什么疑问可以提出来。


编辑:勒农
审核:太傅
2018-03-27 星期二

转载原创文章请注明,转载自: 太傅 » JAVA基础学习笔记(二)简单文件操作
  1. TaiFu_S

    doge 主席的第一篇文章!!!

  2. CongTsang

    鼓掌好好好,棒的,看着主席长大doge在学一波太傅

    1. TaiFu_S
      @CongTsang

      谷歌浏览器该更新了!doge2

      1. CongTsang
        @TaiFu_S

        你盗取我的个人信息!miao4

        1. TaiFu_S
          @CongTsang

          很明显的摆在这里,没看见吗 喷血

          1. CongTsang
            @TaiFu_S

            好好好,让你见识什么叫最棒的浏览器

  3. pony

    牛逼牛逼,给主席点赞打电话

    1. TaiFu_S
      @pony

      二哈 你这用户名有点强阿。

  4. 惶心

    哇编辑!
    哇主席!

    1. TaiFu_S
      @惶心

      吐舌 嘿嘿