javase重新开始系列之文件操作与I/O流
来源:互联网 发布:华东理工网络大学 编辑:程序博客网 时间:2024/06/05 13:43
为什么要使用I/O技术
在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。为了能够永久的保存程序创建的数据,需要将其保存在磁盘文件中,这样以后就可以在其他程序中使用它们。
为了对文件进行操作,Java本身提供了一个API,就是java.io.File类,使用这个类来访问文件属性
而在jdk1.7之后又提供了一个功能更强大的API:java.nio.file.Files
File类并不用来进行文件的读/写操作,它用来描述文件对象的属性,既可以表示文件,也可以表示目录。使用它提供的方法,我们可以得到所指对象的描述信息,包括名称、存在否、读/写权限、路径等等。
(注意:在windows环境中使用路径是不能用\分隔符,这个符号已经被转义了,应使用\\或/例如D:\\java\\b.txt或D:/java/b.txt)
创建文件并输出文件属性
public class FileTest {public static void main(String[] args) {String path = new String(new Scanner(System.in).nextLine());//获取控制台输入的文件名路径File file = new File(path);//用获得的路径实例一个File对象if (!file.exists()) {//判断文件是否存在System.out.println("文件不存在,正在创建文件");try {file.createNewFile();//新建一个文件System.out.println("文件创建成功");} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();System.out.println("文件创建失败");}}else{System.err.println(file.getName());//输出文件的名字System.out.println(new Date(file.lastModified()));//输出文件最后的修改时间System.out.println(file.getAbsolutePath());//输出文件的绝对路径}}}显示某个目录下的文件、目录信息
public class DirTest {public static void main(String[] args) {File dir = new File(System.getProperty("user.dir"));//获取用户目录System.out.println("当前目录是:"+dir.getAbsolutePath());File FileOrDirlist[] = dir.listFiles();for (int i = 0,j = FileOrDirlist.length; i < j; i++) {if(FileOrDirlist[i].isDirectory()){System.out.println("子目录:"+FileOrDirlist[i].getName());}else{System.out.println("文件:"+FileOrDirlist[i].getName()+",大小:"+FileOrDirlist[i].length()+ "字节");}}}}FIles(jdk1.7后)暂不多说,具体看API说明。
I/O流:
File类可以创建文件,但并不能访问、操作文件的内容,这个时候用到I/O流。
输入输出是对内存而言,而不是对文件。(输入到内存,输出到文件)
按流传输基本单位,分为两种
①字节流:基本单位是字节(8位)
抽象类:InputStream负责输入流
OutputStream负责输出流
子类命名格式:XxxxInputStream或XxxxOutputStream(FileInputStream/FileOutputStream)
②字符流(Unicode):基本单位是16位Unicode字符抽象类:Reader 负责输入流
Writer负责输出流
子类命名格式:XxxxReader或XxxxWriter(InputStreamReader/OutputStreamWriter)
(运用BufferedReader和BufferedWriter也可以读写文本文件,且性能较高,因其带有缓冲区
用法:
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//用BufferedReader获取输入,System.in是位流,要将其转换成字符流
BufferedWriter bufWriter = new BufferedWriter(new FileWriter(path)); (未完待续)
0 0
- javase重新开始系列之文件操作与I/O流
- javase重新开始系列之基础类型与运算符
- javase重新开始系列之抽象类与接口
- javase重新开始系列之集合与泛型
- javase重新开始系列之OOP简要
- javase重新开始系列之log4j
- javase重新开始系列之JDBC
- javase重新开始系列之网络编程
- javase重新开始系列之数组和常用类
- java I/O流之文件操作
- I/O操作之文件压缩与解压
- javase重新开始系列之多线程基础
- JAVASE--集合、I/O流
- JavaSE I/O 流 文件度和写
- Linux学习之文件I/O操作
- I\O操作文件之fgetc
- 文件操作之标准I/O函数库
- JAVA之文件操作(I/O)
- shell 判断语句 if else
- android学习----通过XML来定义Menu
- 旅行 (Standard IO)
- 枚举类型的区分
- 设置select下拉菜单为readonly只读代码实例
- javase重新开始系列之文件操作与I/O流
- 关于xcode快速开发定义自己的代码块、快速展开关闭所有方法
- IOS JS与客户端交互
- caffe各层总结
- iOS NSDecimalNumber 货币计算 四舍五入
- 使用pthread_mutex_t锁的例子
- C#获取文件夹下的所有文件的文件名
- ELK利用nginx配置登录认证
- Github上Stars最多的53个深度学习项目,TensorFlow遥遥领先