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. session 总结

    session 总结(单节点场景) session 称作域对象,一般保存在当前服务器的内存中,如果有很多session也会部分不常用的session"钝化"到磁盘中,若磁盘中的se ...

  2. SDUT 2022 Autumn Team Contest 7th

    1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复 思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接 ...

  3. Java 热更新 Groovy 实践及踩坑指南

    Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...

  4. this的指向问题、bind/call/apply改变this指向

    this的指向问题 全局作用域下的this指向 无论是否是严格模式,全局作用域下的this始终指向window 函数内部的this 严格模式下: function test() { 'use stri ...

  5. MySQL数据备份 mysqldump 详解

    MySQL数据备份流程 1 打开cmd窗口 通过命令进行数据备份与恢复: 需要在Windows的命令行窗口中进行: l 开始菜单,在运行中输入cmd回车: l 或者win+R,然后输入cmd回车,即可 ...

  6. 复现禅道V16.5的SQL注入(CNVD-2022-42853)

    漏洞详情 禅道V16.5未对输入的account参数内容作过滤校验,导致攻击者拼接恶意SQL语句执行. 环境搭建 环境下载:禅道V16.5 下载后双击运行,进入目录运行start.exe 直接访问即可 ...

  7. go使用JWT进行跨域认证最全教学

    JWT前言 JWT是JSON Web Token的缩写.JWT本身没有定义任何技术实现,它只是定义了一种基于Token的会话管理的规则,涵盖Token需要包含的标准内容和Token的生成过程. JWT ...

  8. webpack打包思路与流程解析

    一:创建一个新的工程,项目初始化 npm init -y 二:搭建项目框架 三:编写main.js文件内容,在index.js中引入,在把index.js引入到index.html中 例: expor ...

  9. Paxos分布式系统共识算法?我愿称其为点歌算法…

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 分布式系统共识算法Paxos相信大家都不陌生,它被称为最难理解的算法不是没有道理的,首先,它的发表之路就充满了坎 ...

  10. 人生苦短,我用 python 之入门篇

    Python 是一种跨平台的,开源的,免费的,解释型的高级编程语言,它具有丰富和强大的库,其应用领域也非常广泛,在 web 编程/图形处理/黑客编程/大数据处理/网络爬虫和科学计算等领域都能找到其身影 ...