文件操作(IO操作)
目录
一、文件
二、Java中操作文件(File)
构造方法
常用方法
三、文件内容读写(IO流)
io流
1、InputStream
FileputStream
2、OutputStream
FileOutputStream
一、文件
1、包含数据本身内容+metadata(文件的头信息:文件名、修改时间、文件大小等)
2、文件系统结构
3、文件路径
- 绝对路径:从根节点到叶子节点的整个路径(windows从磁盘开始)
- 相对路径:从任意一个结点出发,到目的节点,经过的路径
![]()
4、文件划分
- 文本文件:被字符集编码的文本
- 二进制文件:按照标准格式保存的非字符集编码的文本
需要保证保存文件和打开文件的编码格式一致,否则就会乱码。
java中文本是string,可以使用getbytes("编码格式")返回byte[];
java中的二进制数据byte[],也可以转换为文本,使用new String(bytes)或new String(bytes,"编码格式").
二、Java中操作文件(File)
构造方法
方法 | 说明 |
File(String pathname) | 根据文件路径创建一个新的File,可以是相对路径也可以是绝对路径 |
常用方法
返回值类型 | 方法 | 说明 |
boolean | createNewFile() | 创建一个文件(路径中不存在才可以创建) |
boolean | delete() | 删除文件或目录(目录下为空才可以删除,不为空的目录,需要一个一个子目录遍历进行删除) |
boolean | exists() | 判断目录或文件是否存在 |
String | getName() | 获取文件或目录的名称 |
String | getParent() | 获取文件的父目录路径 |
String | getPath() | 获取文件或目录的路径 |
boolean | isFile() | 是否是文件 |
boolean | isDirectory() | 是否是目录 |
long | length() | 返回文件的大小(字节数) |
long | lastModified() | 返回文件上一次修改的时间 |
File[] | listFiles() | 返回目录的下一个子目录或者子文件 |
boolean | mkdir() | 创建一级目录 |
boolean | mkdirs() | 创建多级目录 |
boolean | renameTo() | 进行文件改名/移动(剪切,粘贴操作) |
【应用如下】
public static void main(String[] args) throws IOException {//文件路径相关函数File file1=new File("E:\\javacode\\20110312\\20110312.iml");System.out.println("文件名:"+file1.getName());System.out.println("文件路径:"+file1.getPath());System.out.println("文件的父目录:"+file1.getParent());System.out.println("文件的绝对路径:"+file1.getAbsolutePath());System.out.println("===============================");//创建文练习File file2=new File("E:\\练习\\创建的文件.txt");System.out.println("是否存在:"+ file2.exists());System.out.println("是否创建成功:"+file2.createNewFile());System.out.println("是否是文件目录:"+file2.isDirectory());System.out.println("是否是文件:"+file2.isFile());System.out.println("再次创建是否成功:"+file2.createNewFile());System.out.println("==================================");//删除文件练习File file3=new File("E:\\练习\\要删除的文件.txt");System.out.println("要删除的文件是否存在:"+file3.exists());System.out.println("创建需要删除的文件:"+file3.createNewFile());System.out.println("要删除的文件是否存在:"+file3.exists());System.out.println("删除要删除的文件:"+file3.delete());System.out.println("要删除的文件是否存在:"+file3.exists());}
三、文件内容读写(IO流)
io流
将数据从一个设备传输到另一个设备,就是io操作。
从不同的层面可以进行不同的划分:
(1)来源:文件io、网络io
(2)方向:输入流(读取数据)、输出流(写数据)
【System.in标准输入流;System.out标准输出流;System.error错误输出流】
1、InputStream
最顶级的输入流,所有真实使用的io流,都是它的子类。
返回类型 | 方法 | 说明 |
int | read() | 读取一个字节的数据,未读取到返回-1 |
int | read(byte[] b) | 最多读取b.length字节的数据到b中,返回实际读到的数量。未读取到返回-1 |
int | read(byte[] b,int off,int len) | 从off位置开始,最多读取len个字节,返回实际读到的数量,未读到返回-1 |
void | close() | 关闭字节流 |
只是一个抽象类,要使用需要具体的实现类。
FileputStream
签名 | 说明 |
FileInputStream(File file) | 利用 File 构造文件输入流 |
FileInputStream(String name) | 利用文件路径构造文件输入流 |
利用Scanner进行字符读取:读写操作,都是阻塞式(我们学习的都是BIO:阻塞式IO)
【输入流可以嵌套其他输入流】
构造方法 | 说明 |
Scanner(InputStream source) | 构造一个Scanner,产生从指定输入流产生的值 |
Scanner(InputStream source,String charset) | 使用charset进行输入的扫描) |
比较常见的字符输入流:
BufferedReader→带Reader的都是字符输入流。
返回值 | 方法 | 说明 |
int | read() | 读取一个字符 |
int | read(char[] cbuf,int off,int len) | 从off位置开始读取len长度,读取到字符数组中 |
String | readLine() | 读取一行 |
2、OutputStream
输出流的顶级抽象类,所有使用的输出类都是它的子类。
返回值 | 方法 | 说明 |
void | write(int b) | 写一个字节 |
void | write(byte[] bytes) | 将bytes数组的数据写到输出流 |
void | write(byte[] b,int off,int len) | 从off位置开始,写len长度的数据到输出流 |
void | close() | 关闭字节流 |
void | flush() | 刷新缓存区,将数据刷新到硬盘 |
flush()函数:
I/O的速度是很慢的,大多的OutputStream为了减少设备操作的次数,写数据时会将数据暂时写入缓存区,直到缓存区慢之后才会真正写入到设备中,但可能会造成我们写的数据会遗留一部分在缓存区。需要在最后调用falsh,刷新到设备中。
FileOutputStream
通过继承outStream的三个write方法,就可以写字节数据。
常见的输出流:
BufferedWriter:带Writer都是字符输出流
【要输入到字节流中,需要先使用字符字节转换流OutputStreamWriter
PrintWriter:和BufferedWriter类似。
文件操作(IO操作)相关推荐
- 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了. 我们可以不用重复造轮子了. 1 ...
- 《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等
运用了jsoup,jmail,多线程,文件的io操作等等多项技术,经历了12*5多个小时终于完成了. 部分代码: package com.ytu.view;import java.awt.Border ...
- 不同存储结构的文件磁盘io操作次数_MySQL InnoDB存储引擎
第1章 MySQL体系结构和存储引擎 1.1数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合.实例:MySQL数据库由后台线程以及一个共享内存区组成.共享内存可以被运行 的后台线程所共享 ...
- 文件基础 IO 操作
文件IO 库函数 IO 打开文件 fopen 向文件写入数据 fwrite 从文件读取数据 fread 关闭文件 fclose 跳转当前读写位置 fseek 练习 系统调用接口 open write ...
- 文件读写io操作范例
系统io读写,copy int main(int argc, char **argv) { if(argc != 3) { printf("Usage: %s <src> ...
- .rpt文件内容读取java_Java快速入门(26) 文件和IO操作
点击上方蓝色"小白轻松学编程",添加"关注" (*平遥古城,图片来源于网络) 文章目录 1 前言2 流3 字节流4 字符流5 标准流6 读取文件7 File和I ...
- Android--查找程序根目录下所有文件/Java IO操作
本实例实现的是浏览根目录下所有的文件,包含子目录下所有的文件,类似于实现"Windows资源管理器",首先,先看下程序的实现截图: 这个程序应用的是ListActivity和Jav ...
- java安全编码指南之:文件IO操作
文章目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStre ...
- NIO详解以及NIO的文件IO操作
一.NIO概述 java.nio全称java non-blockingIO,是指JDK1.4开始提供的新API.从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即Ne ...
- 【APUE】文件 I/O 操作
博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) op ...
最新文章
- Asp.Net下的DataGrid的多层表头
- PYG教程【一】入门
- Docker搭建便捷的开发者环境
- Linux:rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2
- 看mysql版本信息_查看mysql 的版本信息
- html 源码_HTML从零开始——简单介绍
- 通过JS+DIV+CSS排版布局实现选项卡效果
- 写爬虫时遇到的问题及解决方法
- Phone Bills【PAT 1016题】--- 电话账单结算
- android-热修复-sophix
- C语言strtok_r和strtok使用方法
- 为何苹果赚取智能手机市场大部分利润?
- 输入方向的流量控制 --ifb
- How to debug apps on Kindle Fire on OS X
- time.h头文件解析
- 域策略(2)——设置统一桌面背景
- 解决fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached问题
- 信息技术相关的期刊杂志介绍
- NeuroSLAM 论文解析
- 【软件质量保证与测试】实验一、基于Selenium+Python的自动化测试
热门文章
- docker compose 部署 NGINX + PHP+MySQL
- 数据频繁项集挖掘算法
- 怎么在命令行里运行python脚本 (合集)
- 踩不完的微信小程序的坑之【ctx.drawImage 绘制的画布,使用ctx.clearRect清除不了】
- java对接快递鸟单号查询自动识别接口,调用示例
- 怎样提高抖音播放量和点击率
- 成都软件测试培训机构哪家比较好一点?
- 目标检测之SSD详解
- ssr启动成功 但是连接没网络_笔记本WIFI没了怎么办?
- requests InsecureRequestWarning: Unverified HTTPS request is being made.