java输入输出流

1、IO流概述

  • 1、明确要操作的数据是数据源还是数据目的(读/写)

源:InputStream Reader
目的:OutputStream Writer

  • 2、明确要操作的设备上的数据是字节还是文本

源:
字节:InputStream
文本:Reader

目的:
字节:OutputStream
文本:Writer

  • 3、明确数据所在的具体设备

源设备:
硬盘:文件File开头
内存:数组、字符串
键盘:System in
网络:Socket

对应目的设备:
硬盘:文件File开头
内存:数组、字符串
键盘:System out
网络:Socket

  • 4、明确是否需要额外功能

需要转换:转换流InputStreamReader、OutputStreamWriter
需要高效:缓冲流Buffered
保证数据的输出格式:打印流PrintStream、PrintWriter

IO流的分类
image


2、File类

2.1 概述

java.io.File类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。
java.io.File类是文件和目录路径的抽象表示,主要用于文件和目录的创建、查找和删除。

2.2 构造方法

  • 1、public File(String pathname:通过将给定的路径名字符串转换成抽象路径名来创建新的File实例。
  • 2、public File(String parent, String child:从父路径名字符串和子路径名字符串创建新的File实例。
  • 3、public File(File parent, String child:从父抽象路径名和子路径名字符串创建新的File实例。
1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2.  File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建。
// 文件路径名 
String path = "D:\\123.txt";
File file1 = new File(path); 

// 文件路径名
String path2 = "D:\\1\\2.txt";
File file2 = new File(path2);     -------------相当于D:\\1\\2.txt

// 通过父路径和子路径字符串
 String parent = "F:\\aaa";
 String child = "bbb.txt";
 File file3 = new File(parent, child);  --------相当于F:\\aaa\\bbb.txt

// 通过父级File对象和子路径字符串
File parentDir = new File("F:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相当于F:\\aaa\\bbb.txt

File类的注意点:
1、一个File对象代表键盘中实际存在一个文件或目录。
2、File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,
都不影响File对象的创建。

2.3 常用方法

  • 获取功能
  • 获取绝对路径和相对路径
  • 判断功能
  • 创建删除功能

2.3.1 获取功能的方法

  • 1、public String getAbsolutePath():返回此File的绝对路径名字符串。
  • 2、public String getPath():将此File转换为路径名字符串。
  • 3、public String getName():返回由此File表示的文件或目录的名称。
  • 4、public long length():返回由此File表示的文件的长度。
package demo01;

import java.io.File;

public class FileGet {
   
    public static void main(String[] args) {
   
        File f = new File("E:\\Java\\javaSE\\thread\\thread-study\\笔记\\多线程.md");
        System.out.println("文件的绝对路径:" + f.getAbsolutePath());
        System.out.println("文件构造路径:" + f.getPath());
        System.out.println("文件名称:" + f.getName());
        System.out.println("文件长度:" + f.length() + "字节");

        File f2 = new File("E:\\Java\\javaSE\\thread\\thread-study\\笔记");
        System.out.println("目录的绝对路径:" + f2.getAbsolutePath());
        System.out.println("目录构造路径:" + f2.getPath());
        System.out.println("目录名称:" + f2.getName());
        System.out.println("目录长度:" + f2.length());
    }
}

注意:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。

2.3.2 绝对路径和相对路径

绝对路径:一个完整的路径,以盘符开头,例如E://aaa.txt
相对路径:一个简化的路径,不以盘符开头,例如//aaa.txt//b.txt

1、路径不区分大小写
2、路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠

package demo01;

import java.io.File;

public class FilePath {
   
    public static void main(String[] args) {
   
        File f1 = new File("E:\\aaa.txt");
        System.out.println(f1.getAbsoluteFile());

        File f2 = new File("aaa.txt");
        System.out.println(f2.getAbsoluteFile());
    }
}

输出结果:
E:\aaa.txt
E:\Java\javaSE\IOStream\IOStream-Study\aaa.txt

2.3.3 判断功能的方法

  • 1、public boolean exists():此File表示的文件或目录是否实际存在。
  • 2、public boolean isDirectory():此File是否为目录。
  • 2、public boolean isFile():此File是否为文件。
package demo01;

import java.io.File;

public class FileIs {
   
    public static void main(String[] args) {
   
        File f1 = new File("E:\\aaa.txt");
        File f2 = new File("E:\\aaa");
        //判断是否存在
        System.out.println("文件是否存在:" + f1.exists());
        System.out.println("目录是否存在:" + f2.exists());

        //判断是文件还是目录
        System.out.println("E:\\aaa是文件吗?" + f2.isFile());
        System.out.println("E:\\aaa是目录吗?" + f2.isDirectory());
    }
}

运行结果:
文件是否存在:true
目录是否存在:true
E:\aaa是文件吗?false
E:\aaa是目录吗?true

2.3.4 创建删除功能的方法

  • 1、public boolean creatNewFile():文件不存在,创建一个新的文件夹并返回true;文件存在,不创建文件
    并返回false
  • 2、public boolean delete():删除此File表示的文件或目录。
  • 3、public boolean mkdir():创建由此File表示的目录。
  • 4、public boolean mkdirs():创建由此File表示的目录,可以创建多级目录开发中一般使用mkdirs()
package demo01;

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

public class FileCreateDelete {
   
    public static void main(String[] args) throws IOException {
   
        //文件的创建
        File f1 = new File("bbb.txt");
        System.out.println("bbb.txt是否存在:" + f1.exists());//false 不存在
        System.out.println("bbb.txt是否创建:" + f1.createNewFile());//true 需要创建
        System.out.println("bbb.txt是否创建:" + f1.createNewFile());//false 已经创建了,不需要再创建
        System.out.println("bbb.txt是否存在:" + f1.exists());//true 创建了,所以存在

        //目录的创建
        File f2 = new File("newDir");
        System.out.println("newDir是否存在:" + f2.exists());//false
        System.out.println("newDir是否创建:" + f2.createNewFile());//true
        System.out.println("newDir是否存在:" + f2.exists());//true

        //创建多级目录
        File f3 = new File("newDira\\newDirb");
        System.out.println(f3.mkdir());//false
        File f4 = new File("newDira\\newDirb");
        System.out.println(f4
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值