java_高级_文件与流
来源:互联网 发布:tgp优化dnf 编辑:程序博客网 时间:2024/06/15 18:18
文件类
java.io包下都是与文件和流相关的类 i - input输入 o - output输出
java.io.File类 文件类
可以操作计算机的文件(文件自身的属性,而不包含文件的内容)
构造方法
File f = new File("完整路径");
File f = new File("c:/haha/1.txt");
File f = new File(File f, String s);
在目录(文件夹)f中,创建文件s
File f = new File(String f, String s);
在目录(文件夹)f中,创建文件s
API方法
f.createNewFile(); 创建一个新文件
如果f指定的某级路径不存在,文件无法创建会抛出IOException
不会覆盖原有文件
f.delete(); 删除文件
f.exist(); 判断文件f是否存在 存在true 不存在false
f.mkdir(); 创建一个文件夹 (如果存在多级文件夹则无法创建)
f.mkdirs(); 创建文件夹 (如果存在多级文件夹,都会进行创建) -- 推荐使用
canExecute(); 测试文件是否为可执行文件
canRead(); 是否可读
canWrite(); 是否可写 判读只读 返回false -- 只读 返回true -- 可写
f.getName(); 获取文件名
f.getPath(); 获取文件所在的路径(含文件名)
f.getParent(); 获取文件所在的目录(不含文件名)
f.list(); 显示目录f下所有的文件夹名字和文件名
f.listFiles(); 目录f下所有的文件夹和文件组成的file数组
f.isFile(); 判断f是否是一个文件
f.isDirectory(); 判断f是否是一个目录(文件夹)
f.isHidden(); 判断f是否是隐藏文件
f.length(); 文件的大小 Byte(字节)
1Byte = 8bit
100Mbps = 100M bit per second = 100M bit/s = 12.5MB/s
利用Java代码调用某个可执行程序
Runtime.getRuntime().exec("xxxx");
---------------------------------------------------------------------
练习1: 补全---学生管理系统---的2,3,4功能 利用Map集合,要求使用泛型
练习2: 模拟windows系统中的cmd程序
dir指令,显示某个目录下的所有子目录或文件
文件名 目录/文件 文件大小
1.txt 文件 10B
haha 文件夹 10B
cd.. 返回上一级目录
cd xxx 进入xxx目录
输入某个文件名时,执行该文件
三元表达式 String t = 逻辑表达式 ? "值1" : "值2";
当逻辑表达式的值为true时 t = "值1"
为false时 t = "值2"
int i = 逻辑表达式 ? 1 : 2;
当逻辑表达式的值为true时 i = 1
为false时 i = 2
流的分类
流的概念:程序或数据在不同媒介之间的传递
流还被称为“管道”
流向:输入流 和 输出流 针对的是程序 进入程序的流是输入流 从程序出去的流是输出流
单位:字节流 和 字符流 字节流控制二进制的内容(计算机文件:包括图片,音乐,视频,WORD,txt等)
字节流每次可以读取1Byte(一个byte型)的数据 以1Byte为单位
字符流控制纯文本的内容(txt)
字符流每次可以读取2Byte(一个char型)的数据 以2Byte为单位
功能:节点流(原始流) 和 处理流(高级流)
节点流:提供了基本的流的功能
处理流:提升流的处理效率和能力,通常处理流不具备单独处理的能力
输入 输出
字节 InputStream OutputStream
字符 Reader Writer
XXXXXInputStream类 表示 实现某个功能的字节输入流
XXXXXOutputStream类 表示 实现某个功能的自己输出流
XXXXXReader -- 某个字符输入流
XXXXXWriter -- 某个字符输出流
文件操作 -- 节点流
FileInputStream
FileOutputStream
write(b,off,len);//b是一个byte型的数组
write(b,0,5);//写出b数组中下标0开始(含0)的5个数据
FileReader
FileWriter
缓冲处理 -- 处理流
BufferedInputStream
BufferedOutputStream
只提升传输效率,方法与节点流一致
BufferedReader
BufferedWriter
除了提供一些方便的方法对内容操作之外
缓冲流还提供了流的传输效率
序列化 -- 处理流
将程序中的对象或者数据通过流的方式传递给其他媒介
这个对象必须是可被序列化的对象
一个类如果实现了Serializable接口,该类的对象就是可被序列化的对象
生成类如果需要进行序列化操作,需要生成序列码
序列化只能按照顺序存放多个数据
读取多个数据的时候只能按照顺序读回来,不能"跳"着读
将多个数据保存在一个集合对象中,只序列化集合对象
集合中保存的对象都应该是可被序列化的
transient关键字:被transient关键字修饰的属性是不参与序列化过程
在两个不同的程序(进程)中互相传递对象
在网络中传递对象
在不同的介质中传递对象
ObjectInputStream
ObjectOutputStream
了解
DataInputStream
DataOutputStream
转换 -- 字节转字符
InputStreamReader
OutputSreamWriter
特定的流的使用
文件流
文件操作 -- 节点流
FileInputStream
FileOutputStream
FileReader
FileWriter
序列化
序列化 -- 处理流
ObjectInputStream
ObjectOutputStream
-------------------------------------------------------
练习1:在D盘的根目录下有一个1.txt文档,文档中有不确定的内容
将1.txt中出现的文字"a"全部替换成文字"A",将替换后的内容保存至D盘根目录下的2.txt文档
练习2:完成一个方法,可以进行文件的剪切操作
D:/1.jpg -> E:/1.jpg
复制
删除原始文件
练习3:学生管理系统 将数据进行序列化操作
6.保存 --- 序列化 程序 -> 文件
7.保存并退出 --- 序列化 程序 -> 文件
程序开始运行时 --- 反序列化 文件 -> 程序
java.io包下都是与文件和流相关的类 i - input输入 o - output输出
java.io.File类 文件类
可以操作计算机的文件(文件自身的属性,而不包含文件的内容)
构造方法
File f = new File("完整路径");
File f = new File("c:/haha/1.txt");
File f = new File(File f, String s);
在目录(文件夹)f中,创建文件s
File f = new File(String f, String s);
在目录(文件夹)f中,创建文件s
API方法
f.createNewFile(); 创建一个新文件
如果f指定的某级路径不存在,文件无法创建会抛出IOException
不会覆盖原有文件
f.delete(); 删除文件
f.exist(); 判断文件f是否存在 存在true 不存在false
f.mkdir(); 创建一个文件夹 (如果存在多级文件夹则无法创建)
f.mkdirs(); 创建文件夹 (如果存在多级文件夹,都会进行创建) -- 推荐使用
canExecute(); 测试文件是否为可执行文件
canRead(); 是否可读
canWrite(); 是否可写 判读只读 返回false -- 只读 返回true -- 可写
f.getName(); 获取文件名
f.getPath(); 获取文件所在的路径(含文件名)
f.getParent(); 获取文件所在的目录(不含文件名)
f.list(); 显示目录f下所有的文件夹名字和文件名
f.listFiles(); 目录f下所有的文件夹和文件组成的file数组
f.isFile(); 判断f是否是一个文件
f.isDirectory(); 判断f是否是一个目录(文件夹)
f.isHidden(); 判断f是否是隐藏文件
f.length(); 文件的大小 Byte(字节)
1Byte = 8bit
100Mbps = 100M bit per second = 100M bit/s = 12.5MB/s
利用Java代码调用某个可执行程序
Runtime.getRuntime().exec("xxxx");
---------------------------------------------------------------------
练习1: 补全---学生管理系统---的2,3,4功能 利用Map集合,要求使用泛型
练习2: 模拟windows系统中的cmd程序
dir指令,显示某个目录下的所有子目录或文件
文件名 目录/文件 文件大小
1.txt 文件 10B
haha 文件夹 10B
cd.. 返回上一级目录
cd xxx 进入xxx目录
输入某个文件名时,执行该文件
三元表达式 String t = 逻辑表达式 ? "值1" : "值2";
当逻辑表达式的值为true时 t = "值1"
为false时 t = "值2"
int i = 逻辑表达式 ? 1 : 2;
当逻辑表达式的值为true时 i = 1
为false时 i = 2
流的分类
流的概念:程序或数据在不同媒介之间的传递
流还被称为“管道”
流向:输入流 和 输出流 针对的是程序 进入程序的流是输入流 从程序出去的流是输出流
单位:字节流 和 字符流 字节流控制二进制的内容(计算机文件:包括图片,音乐,视频,WORD,txt等)
字节流每次可以读取1Byte(一个byte型)的数据 以1Byte为单位
字符流控制纯文本的内容(txt)
字符流每次可以读取2Byte(一个char型)的数据 以2Byte为单位
功能:节点流(原始流) 和 处理流(高级流)
节点流:提供了基本的流的功能
处理流:提升流的处理效率和能力,通常处理流不具备单独处理的能力
输入 输出
字节 InputStream OutputStream
字符 Reader Writer
XXXXXInputStream类 表示 实现某个功能的字节输入流
XXXXXOutputStream类 表示 实现某个功能的自己输出流
XXXXXReader -- 某个字符输入流
XXXXXWriter -- 某个字符输出流
文件操作 -- 节点流
FileInputStream
FileOutputStream
write(b,off,len);//b是一个byte型的数组
write(b,0,5);//写出b数组中下标0开始(含0)的5个数据
FileReader
FileWriter
缓冲处理 -- 处理流
BufferedInputStream
BufferedOutputStream
只提升传输效率,方法与节点流一致
BufferedReader
BufferedWriter
除了提供一些方便的方法对内容操作之外
缓冲流还提供了流的传输效率
序列化 -- 处理流
将程序中的对象或者数据通过流的方式传递给其他媒介
这个对象必须是可被序列化的对象
一个类如果实现了Serializable接口,该类的对象就是可被序列化的对象
生成类如果需要进行序列化操作,需要生成序列码
序列化只能按照顺序存放多个数据
读取多个数据的时候只能按照顺序读回来,不能"跳"着读
将多个数据保存在一个集合对象中,只序列化集合对象
集合中保存的对象都应该是可被序列化的
transient关键字:被transient关键字修饰的属性是不参与序列化过程
在两个不同的程序(进程)中互相传递对象
在网络中传递对象
在不同的介质中传递对象
ObjectInputStream
ObjectOutputStream
了解
DataInputStream
DataOutputStream
转换 -- 字节转字符
InputStreamReader
OutputSreamWriter
特定的流的使用
文件流
文件操作 -- 节点流
FileInputStream
FileOutputStream
FileReader
FileWriter
序列化
序列化 -- 处理流
ObjectInputStream
ObjectOutputStream
-------------------------------------------------------
练习1:在D盘的根目录下有一个1.txt文档,文档中有不确定的内容
将1.txt中出现的文字"a"全部替换成文字"A",将替换后的内容保存至D盘根目录下的2.txt文档
练习2:完成一个方法,可以进行文件的剪切操作
D:/1.jpg -> E:/1.jpg
复制
删除原始文件
练习3:学生管理系统 将数据进行序列化操作
6.保存 --- 序列化 程序 -> 文件
7.保存并退出 --- 序列化 程序 -> 文件
程序开始运行时 --- 反序列化 文件 -> 程序
0 0
- java_高级_文件与流
- java_高级_多线程
- java_高级_网络编程
- java_高级_界面GUI编程
- java_文件输入与输出
- java_字符流与字节流文件操作
- Java_文件的分割与合并
- Java_文件上传与下载(一)
- Java_文件上传与下载(二)
- Java_文件上传与下载(三)
- Java_简易记事本_文件选择器(JFileChooser)
- java_与sql_server_2005(2000)数据库连接_基类(jdbc驱动)(1)
- Java_语法基础_字符串与数字之间的转换
- java_多线程_生产者与消费者(并发协作)
- java_基础_方法的重载与覆盖
- Java_语法基础_+0与-0的差异
- Java_多线程_成员变量与局部变量
- Java_高级for循环
- poj 1179 循环dp 类似矩阵连乘
- D3.js中初始化缩放比例
- 虚拟机中的Ubuntu16.04启动时自动设置分辨率1920x1080
- Linux 编译安装nginx
- 【OpenGL ES】Hello Triangle
- java_高级_文件与流
- bzoj[1191]: [HNOI2006]超级英雄Hero
- linux下用户的增删
- hiho最小生成树一(prim)算法
- JS开发规范
- JQuery之动态绑定事件
- 让Xcode8.0支持iOS10.3设备真机测试(不断更新真机支持包)
- 数据结构实验——基于数组的栈基本操作
- Redis源码剖析和注释(十四)---- Redis 数据库及相关命令实现(db)