7 Java 输入输出及文件操作

7.1概述

流是输入输出设备的一种抽象表示。

1.1 字节流

java.io包中的InputStream/OutputStream =>称为字节流,或二进制流

字节流分支:对象流、内存流、字节管道流、字节过滤流、音频流、图像流、二进制文件流、随机文件流。8分支

java.util.zip / java.util.jar  压缩流

javax.sound.sampled 音频流

javax.imageio 图像流

javax.xml.stream XML流

1.2 字符流

java.io包中Reader/Writer => 称为字符流

1.3 辨析输入输出流

一个读取字节序列的对象被称为输入流;一个可以写入字节序列的对象被称为输出流。以CPU为中心来判断,输入流就是从磁盘或内存读取数据到CPU,输出流就是CPU把数据写入内存或磁盘。

自理口诀:输入输出的是二进制,读写的是字符。(因为输入输出是机器的操作,读写是人的操作)。读进大脑是输入,大脑控制手写文章是输出。


2.1 File 类

文件对象,是对文件对象的管理,创建文件,移动文件,删除文件,目录,权限等,但是文件内容的读写不在这个类里面。

File在java.io.*里面;

构造函数:都是返回一个指定路径下文件的路径,不同的是文件路径组合。

File(path)   => 绝对路径,/相对路径

File(File parent,filename) => 父目录对象+文件名,

File(String parent, filename) => 父目录是字符串 +文件名。

获取目录有两个方法:

public String getParent() => 返回父目录是字符串

public File getParentFile() => 返回父目录对象

文件组织结构入下图:

路径常用函数

获取绝对路径

public String getAbsolutePath()  => 返回绝对路径,字符串

public File getAbsoluteFile() => 返回绝对路径,文件对象

import java.io.File;

public class File_Test {
    public static void main(String[] args) {
        File testFile2 = new File("..\\filecheck\\file2.txt");
        String path2 = testFile2.getAbsolutePath();
        System.out.println("获取绝对路径file2:\t" + path2.getClass());
        File path21= testFile2.getAbsoluteFile();
        System.out.println("获取绝对路径file2:的类型\t" + path21.getClass());
    }
}
/*
获取绝对路径file2:	class java.lang.String
获取绝对路径file2:的类型	class java.io.File
*/

获取文件名:getName(), 获取路径:getpath(),

获取路径文件夹下面的所有文件(包含目录):public String[] list()=>返回 文件名(字符串)

public File[] list() => 返回文件对象,每个对象是一个绝对路径

import java.io.File;

public class File_Test {
    public static void main(String[] args) {
        File testFile1 = new File("E:\\java\\interface_test\\filecheck\\file1.txt");//返回文件路径
        File parent1 = testFile1.getParentFile();

        String[] fileList = parent1.list();
        System.out.println(parent1+"下面的所有文件名字(字符串):");
        for(String i:fileList)
            System.out.println(i);

        File[] fileList1 = parent1.listFiles();
        System.out.println(parent1 + "下面的所有文件对象是");
        for(File i : fileList1)
            System.out.println(i);
    }
}
/*
E:\java\interface_test\filecheck下面的所有文件名字(字符串):
fdhfahd
file1.txt
file2.txt
file3.txt
E:\java\interface_test\filecheck下面的所有文件对象是
E:\java\interface_test\filecheck\fdhfahd
E:\java\interface_test\filecheck\file1.txt
E:\java\interface_test\filecheck\file2.txt
E:\java\interface_test\filecheck\file3.txt
*/

判断函数:

目录判断=>  isDirectory()

文件判断=> isFile()

可读判断=>canRead()

可写判断=>canWrite()

路径存在判断=> exists()

是否隐藏判断=> isHidden()

import java.io.File;

public class File_Test {
    public static void main(String[] args) {
        File testFile1 = new File("E:\\java\\interface_test\\filecheck\\file1.txt");//返回文件路径
        File parent1 = testFile1.getParentFile();

        File[] fileList1 = parent1.listFiles();
        System.out.println(parent1 + "下面的所有文件对象是");
        for (File i : fileList1){
            if (i.exists()){
                if (i.isDirectory()){
                    System.out.print(i+"\t是一个目录。\t");
                    File[] file1 = i.listFiles();
                    if(!i.isHidden()) System.out.print("不是隐藏文件");
                    if (file1.length ==0) System.out.println("是空目录");

                }
                else if(i.isFile())
                {
                    System.out.print(i + "\t是一个文件。");
                    if (i.canRead()) System.out.print("\t可读");
                    if(i.canWrite()) System.out.print("\t可写");
                    System.out.println();
                }
            }
            else
                System.out.println(i +"\t不存在!");
        }
    }
}

文件、目录,增、删:

createNewFile()增加,delet() 删除

mkdir()

mkdirs()

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

public class File_Test {
    public static void main(String[] args) throws IOException {
        File fileroute = new File("E:\\java\\interface_test\\geimefive");
        if(fileroute.exists())
            fileroute.mkdirs();
        String filename = "testfile.txt";
        File newone = new File(fileroute + File.separator + filename);
        if(newone.exists()) newone.delete();
        else
            newone.createNewFile();

    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值