InputStream和OutputStream
来源:互联网 发布:ewsa软件字典手机号码 编辑:程序博客网 时间:2024/06/05 17:49
什么时候用in什么时候用out? 第一:我的内存是中心,第二:看流的方向(矢量)
BufferedReader in=new BufferedReader(new InptuStreamReader(new FileInputStream(“infilename”)));
不管你从磁盘中读,从网络读读到内存,都是InputStream
写文件
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(“outfilename”)));
不管你写到磁盘,写到网络,或者写到屏幕,都是OutputStream
我们所说的流,都是针对内存说的,为什么打印到屏幕上就是System.out.println();而从屏幕等待用户输入的却是System.in呢?因为对于内存来说,把字符串打印到屏幕上是从内存流向屏幕这个显示器的,也就是输出,而从屏幕等待用户输入呢?就是等待键盘将字符输入到内存中。
往硬盘上写文件是out还是in呢?别一看到“写”文件你就说in,那是望文生义,你看,写文件的流向,是 内存———->硬盘 内存为中心,到硬盘,OK 用out 那么就是FileOutputStream、BufferedOutputStream 等等
那读文件呢?是 内存<—————硬盘 那么就是in了 , 看清楚数据的流向就OK!
InputStream输入类:首先需要读取的内容转化成输入流,再从它那里进行读取。
OutputStream输出类:首先需要与写入的目的地相关联,然后再通过它进行写入。
输入:把要读取的内容输入到输入流,再从输入流进行读取,所以是read();
输出:把要输出的东西通过输出流输出到目的地,所以是write();
实例:
向文件中写入字符串
public class OutputStream { public static void main(String[] args) throws Exception { File f = new File("d:" + File.separator + "test.txt"); OutputStream out = new FileOutputStream(f); String str = "Hello"; byte[]b = str.getBytes(); out.write(b); out.close(); } }
从文件中读取
public class InputStream{ public static void main(String[] args) throws Exception { File f = new File("d:" + File.separator + "test.txt"); InputStream input = new FileInputStream(f); byte [] b =new byte [(int)f.length()]; input.read(b); input.close(); System.out.println("内容为:" + new String(b)); } }
缓冲输入文件:
打开一个文件用于字符输入,可以使用String或File对象作为文件名的FileInputReader,为了提高速度,对文件进行缓冲,我们应将所产生的引用传给一个BufferedReader构造方法,BufferedReader也提供readLine()方法,所以这是我们最终的对象以及进行读取的接口,当readLine()返回null,即可判断到达文件末尾。
/** * BufferedReader的官方解释: * 创建使用指定大小的输入缓冲区的缓冲!字符!输入流。 */ BufferedReader br=new BufferedReader(new FileReader(fileName)); String s; StringBuilder sb=new StringBuilder(); while ((s=br.readLine())!=null){ sb.append(s); } br.close();
public static void main(String[] args) { try { //关于FileReader,跳过代码就能看到解析 BufferedReader br=new BufferedReader(new FileReader(new File("E:\\test.txt"))); StringBuilder sb =new StringBuilder(); String lines; while((lines=br.readLine())!=null){ //因为有中文,所以使用utf-8编码格式。 //但是new String的时候要把字符串转成字节 lines=new String(lines.getBytes(),"utf-8"); sb.append(lines); } System.out.println(sb.toString()); } catch (IOException e) { e.printStackTrace(); } }
参考博客:http://blog.csdn.net/wjzj000/article/details/53911635
- InputStream 和OutputStream
- InputStream 和OutputStream
- InputStream 和OutputStream
- InputStream 和OutputStream
- InputStream 和OutputStream
- inputStream 和outputStream
- InputStream 和OutputStream
- InputStream 和OutputStream
- InputStream 和OutputStream
- InputStream和OutputStream
- InputStream和OutputStream
- InputStream 和OutputStream
- InputStream 和OutputStream介绍
- InputStream 和 OutputStream
- OutputStream和InputStream
- InputStream和OutputStream
- InputStream和OutputStream
- InputStream 和OutputStream
- 第一章
- Zookeeper集群
- Codeforces Round #436 (Div. 2) 做题总结
- jQuery事件学习笔记
- 一个机电专业硕士关于未来的思考
- InputStream和OutputStream
- 调试Web应用程序
- 跨域通信的几种方式(jsonp,hash,postMessage,websocket,cors)
- 算法分析与设计课程作业第三周#1
- 开源纯C#工控网关+组态软件
- MATLAB中使用libsvm
- Dungeon Master bfs
- 红黑树插入
- 关于matlab中求定积分int和quad命令的使用