目录

一、文件

二、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操作)相关推荐

  1. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

    复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了.        我们可以不用重复造轮子了. 1 ...

  2. 《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等

    运用了jsoup,jmail,多线程,文件的io操作等等多项技术,经历了12*5多个小时终于完成了. 部分代码: package com.ytu.view;import java.awt.Border ...

  3. 不同存储结构的文件磁盘io操作次数_MySQL InnoDB存储引擎

    第1章 MySQL体系结构和存储引擎 1.1数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合.实例:MySQL数据库由后台线程以及一个共享内存区组成.共享内存可以被运行 的后台线程所共享 ...

  4. 文件基础 IO 操作

    文件IO 库函数 IO 打开文件 fopen 向文件写入数据 fwrite 从文件读取数据 fread 关闭文件 fclose 跳转当前读写位置 fseek 练习 系统调用接口 open write ...

  5. 文件读写io操作范例

    系统io读写,copy int main(int argc, char **argv) {  if(argc != 3) {   printf("Usage: %s <src> ...

  6. .rpt文件内容读取java_Java快速入门(26) 文件和IO操作

    点击上方蓝色"小白轻松学编程",添加"关注" (*平遥古城,图片来源于网络) 文章目录 1 前言2 流3 字节流4 字符流5 标准流6 读取文件7 File和I ...

  7. Android--查找程序根目录下所有文件/Java IO操作

    本实例实现的是浏览根目录下所有的文件,包含子目录下所有的文件,类似于实现"Windows资源管理器",首先,先看下程序的实现截图: 这个程序应用的是ListActivity和Jav ...

  8. java安全编码指南之:文件IO操作

    文章目录 简介 创建文件的时候指定合适的权限 注意检查文件操作的返回值 删除使用过后的临时文件 释放不再被使用的资源 注意Buffer的安全性 注意 Process 的标准输入输出 InputStre ...

  9. NIO详解以及NIO的文件IO操作

    一.NIO概述 java.nio全称java non-blockingIO,是指JDK1.4开始提供的新API.从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即Ne ...

  10. 【APUE】文件 I/O 操作

    博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) op ...

最新文章

  1. Asp.Net下的DataGrid的多层表头
  2. PYG教程【一】入门
  3. Docker搭建便捷的开发者环境
  4. Linux:rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2
  5. 看mysql版本信息_查看mysql 的版本信息
  6. html 源码_HTML从零开始——简单介绍
  7. 通过JS+DIV+CSS排版布局实现选项卡效果
  8. 写爬虫时遇到的问题及解决方法
  9. Phone Bills【PAT 1016题】--- 电话账单结算
  10. android-热修复-sophix
  11. C语言strtok_r和strtok使用方法
  12. 为何苹果赚取智能手机市场大部分利润?
  13. 输入方向的流量控制 --ifb
  14. How to debug apps on Kindle Fire on OS X
  15. time.h头文件解析
  16. 域策略(2)——设置统一桌面背景
  17. 解决fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached问题
  18. 信息技术相关的期刊杂志介绍
  19. NeuroSLAM 论文解析
  20. 【软件质量保证与测试】实验一、基于Selenium+Python的自动化测试

热门文章

  1. docker compose 部署 NGINX + PHP+MySQL
  2. 数据频繁项集挖掘算法
  3. 怎么在命令行里运行python脚本 (合集)
  4. 踩不完的微信小程序的坑之【ctx.drawImage 绘制的画布,使用ctx.clearRect清除不了】
  5. java对接快递鸟单号查询自动识别接口,调用示例
  6. 怎样提高抖音播放量和点击率
  7. 成都软件测试培训机构哪家比较好一点?
  8. 目标检测之SSD详解
  9. ssr启动成功 但是连接没网络_笔记本WIFI没了怎么办?
  10. requests InsecureRequestWarning: Unverified HTTPS request is being made.