总结一下Java I/O文件读写基本类相关知识和概念,对于程序设计者来说,创建一个好的输入/输出系统是一项艰难的任务,其中挑战来源于所有的可能性,不仅存在各种源端 与接收端(文件,控制台,网络链接等),而且还需要以各种不同的方式与它们通信(顺序,随机存取,缓冲,二进制,按字符,按行,按字等)。

Java I/O主要包括如下几个层次:

File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。

Reader(文件格式操作):抽象类,基于字符的输入操作。

Writer(文件格式操作):抽象类,基于字符的输出操作。

RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

1. File

它是独立于系统平台的,利用其构造函数创建出相应的File 对象;再调用其中的方法实现对文件的各个属性方面的操作。

构造函数:

File( String  path)

File(String path, String FileName)

File(File dir, String name)

用途:File类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等。

publicstaticvoidmain(String[] args)throwsIOException {

File f = newFile("dir");

f.createNewFile();// 创建一个.txt这个文件

f.mkdir();// 创建一个名为.txt的目录

/*

* 使用绝对路径

*

* File f=new File("D:\\dir\\src\\A.java");

*

* f.createNewFile();

*/

/*

* 跨平台使用

*

* 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);

*

* String strFile="dir"+File.separator+"src"+File.separator +"A.java";

*

* File f=new File(fDir,strFile);

*

* f.createNewFile();

*

* f.delete();//删除文件或目录

*

* //f.deleteOnExit();

*/

/*

* 在缺省的临时文件目录下创建临时文件

*

* for(int i=0;i<5;i++)

*

* {

*

* File f=File.createTempFile("winTemp",".tmp");

*

* f.deleteOnExit();//退出时删除

*

*

*

* }

*/

/*

* 列出指定目录下所有子目录及文件的名称

*/

File fDir = newFile(File.separator);

String strFile = "dir"+ File.separator +"src";

File f = newFile(fDir, strFile);

String[] names = f.list();

for(inti =0; i

System.out.println(names[i]);

}

// 有过滤器的情况FilenameFilter是个接口

File dir = newFile(File.separator);

String filepath = "dir"+ File.separator +"src";

/**

* dir

* 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数

* 如果dir为//,则此路径为本文件所在磁盘根目录

*/

File f = newFile(dir, filepath);

if(f.exists()) {

} else{

f.mkdirs();

}

String[] names = f.list(newFilenameFilter() {// 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件

@Override

publicbooleanaccept(File dir, String name) {

System.out.println(name.indexOf(".java"));

returnname.indexOf(".java") != -1;

}

});

for(inti =0; i

System.out.println(names[i]);

}

}

publicstaticvoidmain(String[] args)throwsIOException {

File f = newFile("dir");

f.createNewFile();// 创建一个.txt这个文件

f.mkdir();// 创建一个名为.txt的目录

/*

* 使用绝对路径

*

* File f=new File("D:\\dir\\src\\A.java");

*

* f.createNewFile();

*/

/*

* 跨平台使用

*

* 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);

*

* String strFile="dir"+File.separator+"src"+File.separator +"A.java";

*

* File f=new File(fDir,strFile);

*

* f.createNewFile();

*

* f.delete();//删除文件或目录

*

* //f.deleteOnExit();

*/

/*

* 在缺省的临时文件目录下创建临时文件

*

* for(int i=0;i<5;i++)

*

* {

*

* File f=File.createTempFile("winTemp",".tmp");

*

* f.deleteOnExit();//退出时删除

*

*

*

* }

*/

/*

* 列出指定目录下所有子目录及文件的名称

*/

File fDir = newFile(File.separator);

String strFile = "dir"+ File.separator +"src";

File f = newFile(fDir, strFile);

String[] names = f.list();

for(inti =0; i

System.out.println(names[i]);

}

// 有过滤器的情况FilenameFilter是个接口

File dir = newFile(File.separator);

String filepath = "dir"+ File.separator +"src";

/**

* dir

* 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数

* 如果dir为//,则此路径为本文件所在磁盘根目录

*/

File f = newFile(dir, filepath);

if(f.exists()) {

} else{

f.mkdirs();

}

String[] names = f.list(newFilenameFilter() {// 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件

@Override

publicbooleanaccept(File dir, String name) {

System.out.println(name.indexOf(".java"));

returnname.indexOf(".java") != -1;

}

});

for(inti =0; i

System.out.println(names[i]);

}

}

publicstaticvoidmain(String[] args)throwsIOException {

File f = newFile("dir");

f.createNewFile();// 创建一个.txt这个文件

f.mkdir();// 创建一个名为.txt的目录

/*

* 使用绝对路径

*

* File f=new File("D:\\dir\\src\\A.java");

*

* f.createNewFile();

*/

/*

* 跨平台使用

*

* 根据不同操作系统获得对应的分隔符 File fDir=new File(File.separator);

*

* String strFile="dir"+File.separator+"src"+File.separator +"A.java";

*

* File f=new File(fDir,strFile);

*

* f.createNewFile();

*

* f.delete();//删除文件或目录

*

* //f.deleteOnExit();

*/

/*

* 在缺省的临时文件目录下创建临时文件

*

* for(int i=0;i<5;i++)

*

* {

*

* File f=File.createTempFile("winTemp",".tmp");

*

* f.deleteOnExit();//退出时删除

*

*

*

* }

*/

/*

* 列出指定目录下所有子目录及文件的名称

*/

File fDir = newFile(File.separator);

String strFile = "dir"+ File.separator +"src";

File f = newFile(fDir, strFile);

String[] names = f.list();

for(inti =0; i

System.out.println(names[i]);

}

// 有过滤器的情况FilenameFilter是个接口

File dir = newFile(File.separator);

String filepath = "dir"+ File.separator +"src";

/**

* dir

* 上级抽象路径,如果dir为null,那么程序将自动调用单个参数的File构造方法,同时将filepath路径应用到File但构造参数

* 如果dir为//,则此路径为本文件所在磁盘根目录

*/

File f = newFile(dir, filepath);

if(f.exists()) {

} else{

f.mkdirs();

}

String[] names = f.list(newFilenameFilter() {// 实现了FilenameFilter接口的匿名类,实现accept方法过滤文件

@Override

publicbooleanaccept(File dir, String name) {

System.out.println(name.indexOf(".java"));

returnname.indexOf(".java") != -1;

}

});

for(inti =0; i

System.out.println(names[i]);

}

}

RandomAccessFile(随机文件读写类):

(1)RandomAccessFile类:它直接继承于Object类而非InputStream/OutputStream类,从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。

(2)由于RandomAccessFile类实现了DataOutput与DataInput接口,因而利用它可以读写Java中的不同类型的基本类型数据(比如采用readLong()方法读取长整数,而利用  readInt()方法可以读出整数值等)。

RandomFileRW.java

importjava.io.IOException;

importjava.io.RandomAccessFile;

publicclassRandomFileRW {

publicstaticvoidmain(String args[]) {

StringBuffer buf = newStringBuffer();

charch;

try{

while((ch = (char) System.in.read()) !='\n') {

buf.append(ch);

}

// 读写方式可以为"r" or "rw"

/**

* @param mode 1. r 2. rw 3. rws 4. rwd

* "r" Open for reading only. Invoking any of the write methods of the resulting object will

*      cause an IOException to be thrown.

* "rw" Open for reading and writing. If the file does not already exist then an attempt will

*      be made to create it.

* "rws" Open for reading and writing, as with "rw", and also require that every update to the

*      file's content or metadata be written synchronously to the underlying storage device.

* "rwd"   Open for reading and writing, as with "rw", and also require that every update to the

*      file's content be written synchronously to the underlying storage device.

*/

RandomAccessFile myFileStream = newRandomAccessFile("c:\\UserInput.txt","rw");

myFileStream.seek(myFileStream.length());

myFileStream.writeBytes(buf.toString());

// 将用户从键盘输入的内容添加到文件的尾部

myFileStream.close();

} catch(IOException e) {

}

}

}

【编辑推荐】

【责任编辑:chensf TEL:(010)68476606】

java rw_Java基础之I/O流详解相关推荐

  1. 基于java洗浴中心管理系统_Java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  2. java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦

    一.IO流是什么 惯例引用百科的回答流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作 ...

  3. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  4. 《Java基础——break与continue用法详解》

    Java基础--break与continue用法详解 一. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不再进行下一轮 ...

  5. JavaIO流详解——Java教案(十)

    文章目录 IO流 相关资源 1. File 访问文件和目录 相对路径和绝对路径 创建文件 查看文件列表 获取所有磁盘的根路径 文件过滤器 小结 2. IO流 流的分类 流的概念模型 3. 字节流和字符 ...

  6. Java 中IO流详解(附实例代码/面试题)

    Java I/O流详解 前言 一.I/O流是什么? 二.IO流分类: 1. 流程图: io流对象 2. io流的优缺点: 3. io 流Java中用途有哪些? 三.一些 io 实例 四.面试题: 前言 ...

  7. Java经典面试题整理及答案详解(八)

    简介: Java经典面试题第八节来啦!本节面试题包含了进程.线程.Object类.虚拟内存等相关内容,希望大家多多练习,早日拿下心仪offer- 了解更多: Java经典面试题整理及答案详解(一) J ...

  8. Java--Stream流详解

    Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式) Stream流是从支持数据处理操 ...

  9. Java垃圾回收(GC)机制详解

    Java垃圾回收(GC)机制详解 转自:https://www.cnblogs.com/xiaoxi/p/6486852.html 一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因 ...

最新文章

  1. ubuntu clion 创建桌面快捷方式
  2. 模拟 ZOJ 3878 Convert QWERTY to Dvorak
  3. SSAS : 使用.NET为SSAS编写自定义程序集
  4. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享
  5. 洛谷——P1177 【模板】快速排序
  6. 汉字正字表达式解决方案
  7. ArcGIS制图表达Representation实战篇1-边界线和行道树制作
  8. Windows环境下32位汇编语言程序设计笔记-基础篇
  9. [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展...
  10. 2011-5-学习总结
  11. 如何取消github邮件订阅
  12. orcad 16.6 关闭startpage
  13. 计算机怎么连接网络打印,无线局域网怎么连接网络打印机呢?
  14. C++ Boost库分类总结
  15. 悦虎洛达1562M二代固件升级包最新V1.40更新日期2021.1.12(教程)
  16. Sprite Kit教程
  17. # 数据结构---1.栈的实现
  18. 01-前端工程化概述
  19. 音视频技术之《移动直播秒开优化经验》
  20. 三张简图搞懂GBDT

热门文章

  1. 做好准备迎接崭新的BCH了吗?
  2. gitlab 推送本地代码到远程仓库
  3. asp.net core上使用redis探索(1)
  4. 对DIP IoC DI的理解与运用
  5. jbpm人工终止的开发
  6. 反客为主 ——浅议呼叫中心在网络营销4C策略中的角色与价值
  7. 赛门铁克针对勒索软件WannaCry发布全球预警
  8. 美博士环保聚焦“限漆令”出台之后的涂料行业
  9. zabbix rpm 安装 新增zabbix yum 源 并更新
  10. java regex