Java io流的概述
Java语言定义了许多专门负责各种方式的输入/输出,这些类都被放在java.io包中。其中,所有输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类。
输入流
InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStream类里面包含很多方法,主要理解FileInputStream,了解一下BufferedInputStream和DataInputStream。
InputStream类常用的方法
方法 | 说明 |
read() | 从输入流中读取数据的下一个字节。返回0-255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1 |
read(bytr[] b) | 从输入流中读入一定长度的字节,并以整数的形式返回字节数 |
close() | 关闭此输入流并释放与该流关联的所有系统资源 |
Java中的字符是Unicode编码,是双字节的。InputStream是用来处理字节的,在处理字符文本时不是很方便,所以java为字符文本的输入提供了专门的一套单独的类Reader,但Reader类并不是InputStream类的替换者,只是在处理字符串时简化了编程。
Reader常用的一个方法就是FileReader。
输出流
OutputStream类是字节输入流的抽象类,此抽象类表示输出字节流的所有类的超类。OutputStream类中常用的也是FileOutputStream,了解BufferedOutputStream和DataOutputStream。
OutputStream类常用的方法
方法 | 说明 |
write(int b) | 将制定的字节写入此输出流 |
write(byte[] b) | 将b.length个字节从指定的byte数组写入此输出流 |
flush() | 彻底完成输出并清空缓存区 |
closr() | 关闭输出流 |
Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类,常用的就是FileWriter。
File类
File类是io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件。可以通过调用File类中的方法,实现创建、删除、重命名文件等。File类既可以操作文件,也可以操作目录,即文件夹。
首先是创建文件:
- String fileName = "d:\\aaa.txt";
- File f = new File(fileName);
- f.createNewFile();
创建目录:
- String dirName = "d:\\aaa";
- File f = new File(dirName);
- f.mkdirs();
删除文件:
- String fileName = "d:\\aaa.txt";
- File f = new File(fileName);
- f.delete();
列出文件夹里的内容:
- String a = "I:\\CloudMusic\\";
- File f = new File(a);
- File[] fs = f.listFiles();
- for(int i = 0; i<fs.length;i++){
- if(fs[i].isDirectory()){
- System.out.print("[目录]");
- }
- else if(fs[i].isFile()){
- System.out.print("[文件]");
- }
- String s = fs[i].getPath();
- System.out.println(s);
- }
列出文件名的数组:
- String[] b = f.list(); //输出文件名的数组 xx
- for(int i = 0 ;i<b.length; i++){
- System.out.println(b[i]);
- }
重命名或移动:
- String s1 = "d:\\aaa.txt";
- String s2 = "d:\\bbb.txt";
- File f1 =new File(s1);
- File f2 = new File(s2);
- f1.renameTo(f2);
FileWriter用来把程序的内容写入其他文档:
- String a ="d:\\bbb.txt";
- FileWriter w = new FileWriter(a,true);
- w.write("\r\n");
- w.write("hahahhahahahhah ");
- w.close();
Scanner用来把文档的内容读取到程序:
- StringBuilder sb = new StringBuilder();
- String s = "d:\\bbb.txt";
- File f = new File(s);
- Scanner sc = new Scanner(f);
- while(sc.hasNextLine()){
- String str = sc.nextLine();
- sb.append(str);
- sb.append("\r\n");
- }
- sc.close();
- System.out.println(sb.toString());
读,FileInputStream 字节流:
- String a = "d:\\bbb.txt";
- File f = new File(a);
- FileInputStream fis = new FileInputStream(f);
- byte[] b = new byte[(int)f.length()];
- fis.read(b);
- fis.close();
写,FileOutputStream字节流:
- String s ="你愁啥,瞅你咋地";
- String url ="d:\\bbb.txt";
- File f = new File(url);
- FileOutputStream fos = new FileOutputStream(f ,true);
- byte[] b = s.getBytes();
- fos.write(b);
- fos.close();
FileInputStream,FileOutputStream,Scanner(用来读文本),FileWriter(用来写文本)是重中之重
Java io流的概述的更多相关文章
- Java基础17:Java IO流总结
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- java io流 对文件夹的操作
java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...
- Java IO流题库
一. 填空题 Java IO流可以分为 节点流 和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...
- Java IO流总结
Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...
- java io流 运行错误时,保存异常到文件里面
java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...
随机推荐
- 线程:ThreadLocal实现线程范围内共享变量
在web应用中,一个请求(带有请求参数)就是一个线程,那么如何区分哪些参数属于哪个线程呢?比如struts中,A用户登录,B用户也登录,那么在Action中怎么区分哪个是A用户的数据,哪个是B用户的数 ...
- Asycn/Await 异步编程
Asycn/Await 异步编程初窥(二) 经过总过4天的学习和实践,做完了 WinForm 下 .Net 4.5 的基本异步应用,实现了一个 Http 协议下载的测试程序,为以后使用 .Net ...
- CSS居中方法搜集
转自这里:http://jinlong.github.io/blog/2013/08/13/centering-all-the-directions/ 兼容低版本IE的方法 html使用表格结构 背景 ...
- JDBC之事务隔离级别以及ACID特性
JDBC之事务隔离级别以及ACID特性 事务隔离级别: 1.更新遗失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有 ...
- WPF4.5新特性(MSDN的翻译读不太懂)
WPF4.5新特性(MSDN的翻译读不太懂) 1. 新的Doctype声明 XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明. <!DOCTYPE html PU ...
- MongoDB安装心得
本人纯前端一枚,对于数据库安装各种纠结,出了不少错误,一一列出,方便遇到同样问题的人给以参考,也加深一下自己印象. 故事开始了...Node.js在前端界比较火,由于我也是小小前端,跟随大潮流开始步入 ...
- 线程androidAndroid ConditionVariable的用法
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 在Android开辟中,如果需要线程同步,可以使用Java系统库的wait()和notify ...
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- 开发团队在TFS中使用Git Repository (一)
在研发团队中,代码版本管理是最为基础的必要工具.个人使用过的版本管理工具有SVN.VSS.ClearCase.TFS.Git,从团队的角度和使用角度来说,个人倾向于与使用TFS作为团队的基础工具.首先 ...
- IronPython .NET Integration官方文档翻译笔记
http://ironpython.net/documentation/dotnet/这是原文地址 以下笔记仅记录阅读过程中我认为有必要记录的内容,大多数都是依赖翻译软件的机翻,配合个人对代码的理解写 ...