注
input 输入
output 输出
所有的向内存中送数据的都是输入
所有的从内存中出数据的都是输出
用Java.io包的api方法操作的输入输出
内存–>外存(硬盘,光盘,U盘) 本地流输出
内存<–外存(硬盘,光盘,U盘) 本地流输入
- 结合Socket网络编程
内存–>网络上 网络流输出
内存<–网络上 网络流输入 - 网络流的案例
计算机A和远程的计算机B
从计算机B的计算机上下载文件
1. 先从B中的硬盘上本地流输入,把硬盘上的文件读入到B的内存
2. 把内存中的文件数据网络流输出,把内存数据输出到网络上
3. 计算机A网络流输入,把网络上的文件数据读入到A的内存
4. 把A内存中的数据,本地流输出到A的硬盘上
上传文件的过程和下载是相反的
不用java.io包操作的流
内存–>显示器
内存–>CPU
内存<-- CPU
数据的持久化
数据长时间保留在硬盘上
数据长时间保存在数据库上,其实数据库的本质是以数据文件的方式持久化到硬盘上
在硬盘中的时数据现数来的是文件和目录
java中提供了一个java.io.File类用来操作文件的目录信息和文件的信息就是不能操作文件的内容
- 根据文件的内容操作分为
-
- 字节流:对文件的内容读写用字节的方式操作
-
- 字符流:对文件的内容读写用字符(ASCII)的方式操作,但是其本质(底层)还是用的是字节流
java.io.File类
用户表示文件和目录的,跟文件内容无关
注意一个问题:在不同的操作系统上对于目录间隔符的区分
Windows:
c:\aa\bb\cc.txt
Linux:
/home/aa/bb/cc.txt
在Java中对路径的分隔符的表示
1. Windows方式
c:\\aa\\bb\\cc.txt
c:/aa/bb/cc.txt
2. Linux:
/home/aa/bb/cc.txt
如果想兼容Windows和Linux
"aa"+File.separator+"bb"+File.separator+"cc.txt"
File的API
- 构建Files类对象
File(String filePath)
File(File parent,String child);
File(String parentName,String child); - isFile()
判断是否是文件 - isDirectory()
判断是否是目录 - length()
获取文件的长度 - exsits()
判断文件或目录是否存在 - createNewFile
创建一个空文件
返回值是boolean
如果指定的文件不存在,就创建文件并返回TRUE
如果指定的文件存在,就参会FALSE
-delete()
删除文件
注意:
如果File表示一个目录
删除的时候,要保证目录必须是空的
- mkdir
创建目录 - mkdirs
创建多个目录 - listFiles
返回指定目录中的所有的文件和目录 - listFile(FileFilter)
返回指定的目录中的部分文件,用File和Filter设定筛选条件 - listFiles(FilenameFileFilter)
返回指定目录中的部分文件和目录,FilenameFileFilter设定筛选条件 - 总结
- 只能操作文件或目录的信息
- 就是不能操作文件的内容