简述IO操作

article/2025/10/5 14:16:36

IO

java.io中最主要的五个类就是InputStream、OutputStream、Reader、Writer、File。
从传输方式角度来说,可以将IO分类为:
在这里插入图片描述

一:File

File类的对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度或文件读写权限等,不涉及对文件的读写操作。

对文件属性的操作

public class TestFile {public static void main(String[] args) {File file=new File("E:\\Idea\\IOAndNIO\\src","TestFile.java");String fileName = file.getName();boolean canRead = file.canRead();boolean canWrite = file.canWrite();boolean isExists = file.exists();long length = file.length();String absolutePath = file.getAbsolutePath();String parent = file.getParent();boolean isDirectory = file.isDirectory();boolean isFile = file.isFile();file.lastModified();System.out.println("文件名为:"+fileName);System.out.println("文件是否可读:"+canRead);System.out.println("文件是否可写:"+canWrite);System.out.println("文件是否存在:"+isExists);System.out.println("文件长度:"+length);System.out.println("文件绝对路径:"+absolutePath);System.out.println("文件父目录:"+parent);System.out.println("是否是目录:"+isDirectory);System.out.println("是否是文件:"+isFile);}
}

目录

包含目录的创建和列出目录中的文件:

public class TestFile{public static void main(String[] args) {File file=new File("D:\\dir");//mkdir() 父文件夹存在的情况下创建一个新的子文件夹//mkdirs() 如果父文件夹不存在并最后一级子文件夹不存在,自动创建所有路径的文件夹boolean mkdir = file.mkdir();System.out.println(mkdir?"创建成功":"创建失败");FileAccept fileAccept = new FileAccept();fileAccept.setExtendName("dll");String[] list = file.list(fileAccept);File[] files = file.listFiles(fileAccept);for (String s : list) {System.out.println(s);}for (File file1 : files) {System.out.println(file1.getName());}}
}
/*
* 过滤器,过滤指定的文件
* */
class FileAccept implements FilenameFilter{private String extendName;public void setExtendName(String extendName) {this.extendName = "."+extendName;}@Overridepublic boolean accept(File dir, String name) {return name.endsWith(extendName);}
}

文件的创建和删除

文件的创建:当目录中没有名为"TestFile.java“的文件时,文件对象会调用createNewFile()方法来创建这个文件,但如果没有使用outputStream.write(),那么file作为一个普通的对象,存在于内存中,硬盘中看不到。

File file=new File("E:\\Idea\\IOAndNIO\\src","TestFile.java");

删除文件

file.delete();

运行可执行文件

当要执行一个本地机器上的可执行文件时,可以使用Runtime类, 调用exec(String command)可以打开本地机器的可执行文件或执行一个操作。

public class TestFile {public static void main(String[] args) {Runtime runtime = Runtime.getRuntime();File file=new File("E:\\sqlyog","SQLyog.exe");try {runtime.exec(file.getAbsolutePath());file=new File("C:\\Users\\abc\\AppData\\Local\\Google\\Chrome\\Application","chrome https://www.csdn.net/");runtime.exec(file.getAbsolutePath());} catch (IOException e) {e.printStackTrace();}}
}

二:InputStream和OutputStream

二进制文件的读取和写入,以FileInputStream和FileOutputStream为例:

public class Test {public static void main(String[] args) throws IOException {File file = new File("C:\\Users\\abc\\Desktop", "index.docx");Test test = new Test();test.testOutputStream(file);test.testInputStream(file);}public void testInputStream(File file) throws IOException {FileInputStream fileInputStream = new FileInputStream(file);byte[] bytes = new byte[1024];fileInputStream.read(bytes);System.out.println(new String(bytes));fileInputStream.close();}public void testOutputStream(File file) throws IOException {FileOutputStream fileOutputStream = new FileOutputStream(file);byte[] bytes = "hello world".getBytes();fileOutputStream.write(bytes);}
}

三:Writer和Reader

字符流,以FileWriter和FileReader、BufferedReader为例。

public class Test1 {public static void main(String[] args) throws IOException {File file = new File("C:\\Users\\abc\\Desktop", "index.docx");Test1 test1 = new Test1();test1.testWriter(file);test1.testReader(file);}public void testWriter(File file) throws IOException {//支持追加文件FileWriter fileWriter = new FileWriter(file,true);fileWriter.write("hello\nnice to meet you");fileWriter.flush();fileWriter.close();}public void testReader(File file) throws IOException{FileReader fileReader = new FileReader(file);BufferedReader bufferedReader = new BufferedReader(fileReader);String s=null;while ((s=bufferedReader.readLine())!=null && !"".equals(s)){System.out.println(s);}}
}

字节流和字符流的区别

  1. 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
  2. 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容。

开发中,怎么选择使用哪种方式呢?

字符流只能处理字符类型(char,纯文本可以用字符流,比如汉字,传输de时候要查询编码表,得到汉字对应的字符),而字节流可以处理任何类型(比如图片,视频,是以二进制传输的),在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。


http://chatgpt.dhexx.cn/article/clLLCm5B.shtml

相关文章

Java文件IO操作及案例

文章目录 一. 文件概述1. 狭义和广义上的文件2. 文件的分类3. 文件的路径 二. 针对文件系统的操作1. File类的属性和构造2. File类的获取操作3. File类的判断操作4. 文件的创建和删除5. 其他的常用方法 三. 对文件内容进行读写1. IO流对象2. 文件的读操作3. 文件的写操作4. Sca…

java IO操作

系列文章目录 第一章 万事万物皆对象 第二章 java构造器 第三章 java访问权限 第四章 java初始化 第五章 java继承 第六章 java重载与重写 第七章 java接口和抽象类 第八章 java数组 第九章 java内部类 第十章 java时间操作 第十一章 final关键字 第十二章 java字符串 第十三章…

Linux基础 IO操作

一、IO接口的基本认识与使用 在c语言中,我们对文件用fopen,fread,fwrite,fclose等等c语言标准库函数来进行操作,实际上这些库函数是对系统调用接口的一个封装,目的是操作简单,方便编程。 以下…

Java中的IO操作

IO 操作是我以前不太理解的操作。总是觉得很神奇,然后一脸懵逼。今天终于鼓起勇气,认真的学习IO方面的知识。有理解不妥当或者不正确的地方,还请各位大佬指正。 一、java的io发生在哪? 这个问题,我们必须首先明确下。…

基础IO-文件IO操作

目录 1.C语言文件IO相关操作(库函数IO接口) 2. 系统调用IO接口 1.C语言文件IO相关操作(库函数IO接口) fopen--打开文件,返回一个文件的操作句柄,有了句柄才能对指定的文件进行操作。 FILE *fopen(char *p…

Java文件IO操作

目录 一、了解什么是文件 狭义的文件: 广义的文件: 二、文件的路径 ①文件的绝对路径 ②文件的相对路径 三、Java对于文件的操作 File类的构造方法 File类的普通方法 四、对于文件的内容操作 ①FileInputStream(文件输入流&#xf…

IO操作

一、简介 IO流是用来处理设备之间的数据传输的,数据一般储存在设备上 设备:硬盘,光盘,内存等等,内存是临时储存的 Java对数据的操作是采用流的方式 按照操作的数据分为:字节流和字符流 暗照流向&#x…

Java基础--IO操作

一、IO原理及分类 一、IO原理 1、I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输,如读写文件,网络通信等。 2、java程序中对于数据的输入/输出操作一般都是以流的方式进行 3、java.io包下提供各…

关于I/O操作

https://blog.csdn.net/deram_boy/article/details/51191425 提及这个,就想到了各种文件操作,这种流,什么reader 啊, writer啊,buffer啊,file啊。但是综合的东西与总结,只是曾经了解。因为工作…

IO操作概念

IO:输入输出,对程序的输入与输出 文件:一组有关数据的集合 文件名:这组数据的名字 linux系统中所有文件均属于文件(通过文件系统进行管理) 按类型分类: 1、普通文件 (…

I/O操作

前言 I/O操作即操作存储器,所以想了解I/O操作,需要了解一点存储器相关知识点。 计算机存储器 存储器是计算机的核心部件之一,在完全理想的状态下,存储器应该要同时具备以下三种特性: (1)速度…

操作系统_04_IO相关(个人总结)

声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章 2. 由于是个人总结, 所以用最精简的话语来写文章 3. 若有错误不当之处, 请指出 软硬链接 软链接(快捷方式): 删除原文件时, 软链接则失效 硬链接…

gcc 命令

gcc 命令 GCC 编译器 gcc 命令格式 gcc 选项 文件名字主要选项 -c&#xff1a; 只编译不链接为可执行文件&#xff0c;编译器将输入的.c 文件编译为.o 的目标文件。-o&#xff1a; <输出文件名>用来指定编译结束以后的输出文件名&#xff0c;如果不使用这个选项的话 G…

Ubuntu Linux gcc的常用命令

目录 一、gcc简介 二、简单的gcc编译 1 预处理 2 编译为汇编语言代码 3 汇编 4 连接 三、多个程序文件的编译 四、检查错误 五、连接库文件 1 编译成可执行文件 2 链接 3 强制链接时使用静态链接库 六、总结 一、gcc简介 Linux系统下的Gcc&#xff08;GNU C Compi…

Linux GCC 编译详解

文章目录 一、GCC 编译器简介二、GCC 工作流编程语言的发展GCC 工作流程gcc 和 g 的区别 三、使用 GCC 编译GCC 编译格式GCC 编译流程多个源文件编译 一、GCC 编译器简介 首先&#xff0c;什么是编译器呢&#xff1f; 我们可以使用编辑器&#xff08;如 linux 下的 vi、window…

gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

C程序编编译的过程分为如下四个阶段 1.预处理&#xff1a;头文件展开&#xff08;#include&#xff09;、宏替换&#xff08;#define&#xff09;、条件编译&#xff08;#ifdef&#xff09;(.i)使用预处理器&#xff08;预处理阶段处理的都是以#开头的代码&#xff09; 2.编译…

Linux(gcc编译原理、过程以及常用调试命令)

PS&#xff1a;红色字体表示重点&#xff0c;绿色字体表示重要标题&#xff0c;块引用中表示Linux终端中的命令。 1.gcc / g的安装 命令&#xff1a;sudo apt install gcc /gcc 2.gcc编译连接 //main.c文件 &#xff08;1&#xff09;预编译 ①删除所有的“#define”&#…

Linux中gcc编译步骤

我们这里以C语言为例&#xff0c;看看C语言程序在Linux中编译执行的详细步骤 1.创建一个.c文件 2.写入一些简单的代码 我们使用gcc -E filename.c -o filename.i 命令对程序先进行预处理&#xff1a;处理头文件、宏定义&#xff0c;接下来我们修改一下头文件&#xff0c;使用错…

Linux GCC常用命令

目录 一、示例一 1.简单编译 1.1预处理 1.2编译为汇编代码 1.3汇编 1.4连接 2.多个程序文件的编译 3检错 4库文件连接 二、示例二 1.准备hello.c 2.预处理 3.编译 4.汇编 5.链接 6.分析ELF文件 6.1ELF文件的段 6.2反汇编ELF 一、示例一 1.简单编译 创建文件mkd…

GCC编译过程及基本命令总结

一、GCC简介 GCC即GNU Compiler Collection&#xff0c;原本只是针对C语言的编译工具&#xff0c;现在已经变成了一个工具集&#xff0c;包含了C、C、JAVA等语言的集合体。 管理和维护&#xff1a;由GNU项目负责。 二、GCC对C、C的编译流程 (1) 预处理&#xff08;Preproce…