java File类与文件输入/输出流


File类

File类是java.io包中唯一代表磁盘文件本身的类,该类主要用于文件和目录的创建、文件的查找和文件的删除等。

文件的创建与删除

1.File(String pathname) 该构造方法通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

语法如下:

new File(String pathname)
//pathname代表路径名
//例:
File file = new File("E:\file.txt");

2.File(String parent, String child)该方法根据 parent 路径名字符串和 child 路径名字符串(包含文件名)创建一个新 File 实例。

语法如下:

new File(String parent, String child)
//parent:父路径字符串,如:E:/
//child:子路径字符串,如:file.txt

3.File(File f, String child);该构造方法通过给定的f抽象路径名和子路径名字符串创建一个新的File实例。

语法如下:

new File(File f, String child)
//f:父路径字符串,如:E:/
//child:子路径字符串,如:file.txt

创建File对象:

File file = new File("Hello.txt")

例:

import java.io.File;
public class Filetxt{
public static void main(String[] args) {
File file = new File("D:\\Hello.txt");
if(file.exists()) //如果文件存在
{
file.delete(); //删除文件
System.out.println("文件已删除");
}
else {
try {
file.createNewFile(); //创建该文件
System.out.println("文件已创建");
}catch(Exception e) {
e.printStackTrace();
}
}
}
}

如果D盘目录下有Hello.txt文件,输出:文件已删除,反之输出:文件已创建

获取文件信息

创建File对象成功后,常用方法如下:

方法 描述
public String getName() 返回由此抽象路径名表示的文件或目录的名称。
public String getParent() 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。
public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null。
public String getPath() 将此抽象路径名转换为一个路径名字符串。
public boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
public String getAbsolutePath() 返回抽象路径名的绝对路径名字符串。
public boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。
public boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。
public boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
public boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
public long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
public long length() 返回由此抽象路径名表示的文件的长度。
public boolean createNewFile() throws IOException 当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。
public boolean delete() 删除此抽象路径名表示的文件或目录。
public void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
public String[] list() 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
public String[] list(FilenameFilter filter) 返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
public File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
public File[] listFiles(FileFilter filter) 返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
public boolean mkdir() 创建此抽象路径名指定的目录。
public boolean mkdirs() 创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
public boolean setLastModified(long time) 设置由此抽象路径名所指定的文件或目录的最后一次修改时间。
public boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。
public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
public static File createTempFile(String prefix, String suffix) throws IOException 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
public int compareTo(File pathname) 按字母顺序比较两个抽象路径名。
public int compareTo(Object o) 按字母顺序比较抽象路径名与给定对象。
public boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。
public String toString() 返回此抽象路径名的路径名字符串。

例:

import java.io.File;
public class Filetests{
public static void main(String[] args) {
File file = new File("E:\\Hello.txt");
if(file.exists()) { //如果文件存在
String name = file.getName();
long len = file.length();
boolean hid = file.isHidden();
boolean abso = file.isAbsolute();
System.out.println("名称:"+name);
System.out.println("长度:"+len);
System.out.println("是否是隐藏文件:"+ hid);
System.out.println("是否为绝对路径名:"+abso);
}
}
}

运行结果如下:

名称:Hello.txt
长度:0
是否是隐藏文件:false
是否为绝对路径名:true

文件输入/输出流


FileInputStream与FileOutputStream

InputStream(输入流):输入流是用来读入数据的.

OutputStream(输出流):输出流是用来写出数据的。

FileInputStream

构造方法:

public FileInputStream(String name);
public FileInputStream(File file);

常用方法:

方法 描述
public int read(); 从此输入流中读取一个数据字节
public int read(byte[] b); 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中
public int read(byte[] b,int off,int len); 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。
例:
import java.io.FileInputStream;
public class FileIn {
public static void main(String[] args){
String out=null;
try {
int size=0;
byte[] buffer=new byte[1024];
FileInputStream fis=new FileInputStream("FileIn.txt");
while((size=fis.read(buffer))!=-1){
out=new String(buffer, 0, size);
System.out.println(out);
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

FileOutputStream

构造方法:

方法 描述
public FileOutputStream(File file); 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
public FileOutputStream(File file,boolean append); 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(String name); 创建一个向具有指定名称的文件中写入数据的输出文件流。
public FileOutputStream(String name,boolean append); 创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

常用的方法:

方法 描述
public void write(int b); 向文件中写入一个字节大小的数据
public void write(byte[] b); 将 b.length 个字节从指定 byte 数组写入此文件输出流中。
public void write(byte[] b,int off,int len); 指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

例:

import java.io.FileOutputStream;
public class Filed {
public static void main(String[] args){
try { String font="输出流是用来写入数据的!";
FileOutputStream fos = new FileOutputStream("Filed.txt");
fos.write(font.getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

FileReader和FileWriter


FileReader

FileReader类继承自InputStreamReader类,它自己只提供了几个构造方法,它的构造方法中又通过super来调用父类构造器以构建流对象,它本身没有再提供其他的读取流数据的方法,全部继承它的直接父类InputStreamReader,而InputStreamReader又是继承自Reader类,因此FileReader和InputStreamReader一样,都能使用read()、read(char cbuf[])、read(char cbuf[], int off, int len)方法来读取流数据。

构造方法:

方法 描述
public FileReader(String name) 给定要读取文件名创建一个FileReader对象
public FileReader(File file) 使用File对象创建一个新的FileReader,给定要读取的File对象

FileReader方法:

方法 描述
public int read() throws IOExecption 读取单个字符 ,返回一个int型变量代表读取到的字符
public int read(char [] c, int offset, int len) 读取字符到c数组,返回读取到字符的个数

例:

import java.io.*;
public class P13 {
public static void main(String[] args) throws Exception {
FileReader fr=new FileReader("text/test14");
int num;
while((num=fr.read())!=-1){
System.out.println("读取到的内容是:"+(char)num);
}
//关闭流
fr.close();
}
}

FileWriter

构造方法:

方法 描述
FileWriter(File file) 在给出 File 对象的情况下构造一个 FileWriter 对象
FileWriter(File file, boolean append)

append:如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则写入文件开始处。

FileWriter方法:

方法 描述
public void write(int c) throws IOException 写入单个字符c
public void write(char [] c, int offset, int len) 写入字符数组中开始为offset长度为len的某一部分
public void write(String s, int offset, int len) 写入字符串中开始为offset长度为len的某一部分

例:

import java.io.*;
public class FileReader {
public static void main(String args[]) throws IOException {
File file = new File("Hello1.txt");
file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write("read");
writer.flush();
writer.close();
FileReader fr = new FileReader(file);
char[] a = new char[100];
for (char c : a)
System.out.print(c);
fr.close();
}
}

运行结果如下:

read

java File类与文件输入/输出流:FileInputStream与FileOutputStream的更多相关文章

  1. Java File类与文件IO流总结

    1.File类 File类被定义为“文件和目录路径名的抽象表示形式”,这是因为File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述.通过构造函数创建一个File类对象,则该对象就 ...

  2. Java 之 File类(文件操作)

    一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...

  3. 九:File类,文件的操作

    File的常用方法:

  4. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  5. Java File类基本操作

    我们可以利用Java.io.File类对文件进行操作,基本操作如下: 1)创建文件: public boolean createNewFile() throws IOException 2)删除文件: ...

  6. Java File 类的使用方法详解

    Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看 ...

  7. Java File 类的使用方法详解(转)

    转自:http://www.codeceo.com/article/java-file-class.html Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对J ...

  8. Java——File类概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  9. 使用File类操作文件或目录的属性

    在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...

  10. Java File类 mkdir 不能创建多层目录

    File f = new File("/home/jp/Upload"); if ((!f.exists()) || (!f.isDirectory())) {boolean re ...

随机推荐

  1. mysql_唯一索引数据重复问题总结

    CREATE TABLE `tt_transfer_assemble_diffuse_plan_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCRE ...

  2. 关于指针初始化为NULL的一些问题

    关于指针初始化问题,先看以下代码: #include <stdio.h>​typedef struct{   char data[128];   int top;​} Stack;​voi ...

  3. 重新安装kuboard后,原先配置的CI/CD命令都没了,需要重新创建

    背景介绍 使用如下命令创建的kuboard服务,上一层用nginx设置代理,用域名访问使用的 docker run -d \ --restart=always \ --name=kuboard \ - ...

  4. 在k8s集群中安装rook-ceph 1.8版本步骤

    官方文档地址:https://rook.io/docs/rook/v1.8/quickstart.html Kubernetes 最小版本号 Kubernetes 最小版本号:Kubernetes v ...

  5. 第四章:Django表单 - 4:表单的Widgets

    不要将Widget与表单的fields字段混淆.表单字段负责验证输入并直接在模板中使用.而Widget负责渲染网页上HTML表单的输入元素和提取提交的原始数据.widget是字段的一个内在属性,用于定 ...

  6. a除于b

    a=eval(input()) b=eval(input()) if b!=0: print("{}".format(round(a/b,2))) else: print(&quo ...

  7. CentOS 7.9 安装 rocketmq-4.9.2

    一.CentOS 7.9 安装 rocketmq-4.9.2 地址: https://rocketmq.apache.org https://github.com/apache/rocketmq ht ...

  8. 它让你1小时精通RabbitMQ消息队列(新增死信处理)

    支持.NET/.NET Framework/.NET Core RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的MQ工具,RabbitMQ支持的语言更多.功能更完善. 本文提供一种 ...

  9. Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)

    文章目录 1.列表排序 1.1 .代码实例 1.2 .测试效果 1.3.需要掌握的前提知识 2.Vue监测数据变化的原理 2.1.代码实例 2.2 .测试效果 3.Vue检测数据的原理 3.1 基本知 ...

  10. 分享个好东西两行前端代码搞定bilibili链接转视频!

    只需要在您的要解析B站视频的页面的</body>前面加上下面两行代码即可,脚本会在客户端浏览器里解析container所匹配到的容器里的B站超链接 (如果不是外围有a标签的超链接只是纯粹的 ...