【转载】Java IO基础总结
Java中使用IO(输入输出)来读取和写入,读写设备上的数据、硬盘文件、内存、键盘......,根据数据的走向可分为输入流和输出流,这个走向是以内存为基准的,即往内存中读数据是输入流,从内存中往外写是输出流。
根据处理的数据类型可分为字节流和字符流
1.字节流可以处理所有数据类型的数据,在java中以Stream结尾
2.字符流处理文本数据,在java中以Reader和Writer结尾。
我们来看个IO流的详解图:

IO流的本质是对字节和字符的处理,那么我们平时也是用来处理文件的,就从文件处理开始接触这方面的知识。
1.文件操作(创建文件和文件夹,查看文件)
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
 | 
//创建一个文件路径File file = new File("D:\\testData.txt");if(file.exists()){//得到文件路径System.out.println(file.getAbsolutePath());//得到文件大小System.out.println("文件大小:"+file.length());}//创建文件和创建文件夹File file1 = new File("d:\\iotest.txt");if(!file1.exists()){    try {        file1.createNewFile();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}else{    System.out.println("文件已存在");}//创建文件夹File file2 = new File("d:\\testIO");if(file2.isDirectory()){    System.out.println("文件夹存在");}else{    file2.mkdir();}//列出一个文件夹下的所有文件File f = new File("d:\\testIO");if(f.isDirectory()){    File lists[] = f.listFiles();    for(int i=0;i<lists.length;i++)    {        System.out.println(lists[i].getName());    }} | 
常用字节流FileInputStream和FileOutputStream:
FileInputStream:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
 | 
FileInputStream fis = null;        try {            fis = new FileInputStream("D:\\testData.txt");            byte bytes[]=new byte[1024];            int n=0;            while((n=fis.read(bytes))!= -1){                String str = new String(bytes,0,n);                System.out.print(str);            }        } catch (Exception e) {            e.printStackTrace();        } finally{            try {                fis.close();            } catch (IOException e) {                e.printStackTrace();            }        } | 
 
查看输出:

FileOutputStream:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
 | 
FileOutputStream fos = null;        try {            fos = new FileOutputStream("D:\\testData.txt");            String str = "报效国家,舍生忘死";            byte bytes[] = str.getBytes();            fos.write(bytes);        } catch (Exception e) {            e.printStackTrace();            } finally {            try {                fos.close();            } catch (Exception e2) {                e2.printStackTrace();            }        } | 
查看一下:

如果是续写文件,则可以加上参数:

字符流FileReader和FileWriter:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
 | 
//字符流        //文件写出  输入流        FileReader freader = null;        //写入到文件  输出流        FileWriter fwriter = null;        try {              //创建输入对象            freader = new FileReader("d:\\testData.txt");            //创建输出对象            File f1 = new File("e:\\testData.txt");            if(!f1.exists()){                f1.createNewFile();            }            fwriter = new FileWriter(f1);                         //读入到内存            char chars[] = new char[1024];            int n=0;            while((n=freader.read(chars))!= -1)            {                fwriter.write(chars);                //System.out.println(chars);            }                                               } catch (Exception e) {            e.printStackTrace();            // TODO: handle exception        }finally{            try{            freader.close();            fwriter.close();            }catch(Exception e){                e.printStackTrace();            }        }                                   //缓冲字符流  bufferedReader  bufferedWriter        BufferedReader bfreader = null;        try {            FileReader freader = new FileReader("d:\\testData.txt");            bfreader = new BufferedReader(freader);            //循环读取            String s ="";            while((s=bfreader.readLine())!= null)            {                System.out.println(s);            }        } catch (Exception e) {            // TODO: handle exception        } | 
【转载】Java IO基础总结的更多相关文章
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇
		
在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...
 - 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇
		
本文是Java IO总结系列篇的第3篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
 - 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
		
本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
 - 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
		
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
 - java IO基础操作
		
java IO基础,通熟易懂,好久没复习java 基础了.这里是传送门... http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.ht ...
 - Java io基础
		
1.什么是IO? Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒 ...
 - Java IO基础--File常用操作(递归)
		
File中经常会使用递归方法打印属性结构.统计文件夹下文件个数.子文件夹个数以及文件大小,可以作为递归的应用练习. 递归的写法,百度一搜一大堆,这里我使用对javabean方式封装了一下: packa ...
 - java io基础(java.io)
		
首先流分为输入和输出流,java分为字节流和字符流 1.字节输入流io.InputStream io.InputStream是一个抽象类它实现了Closeable接口的抽象类.那么它的子类(io包下) ...
 - (转载) java:IO流学习小结
		
今天刚刚看完Java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
 
随机推荐
- nyoj_448_寻求最大数_201402261424
			
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920 ...
 - ZooKeeper的配置文件优化性能(转)
			
一.前言 ZooKeeper的功能特性通过ZooKeeper配置文件来进行控制管理( zoo.cfg配置文件). ZooKeeper这样的设计其实是有它自身的原因的.通过前面对ZooKeeper的配置 ...
 - 动态加入的HTML的自己主动渲染
			
这两天在写一个用EasyUI的前台,遇到动态向Layout加入HTML内容时没有自己主动渲染的问题.查了一下网上的资料后得以解决.详细例如以下: $("#content").htm ...
 - 学习KNN算法体会和总结
			
k-d树(k-dimensional树的简称),是一种切割k维数据空间的数据结构.主要应用于多维空间重要数据的搜索(如:范围搜索和近期邻搜索). 索引结构中相似性查询有两种主要的方式:一种是范围查询( ...
 - 多工程联编的Pods如何设置
			
多工程联编的Pods如何设置 (2014-07-17 13:57:10) 转载▼ 标签: 联编 多工程 分类: iOS开发 如今,CocoaPods使用越来越多,几乎每个项目都会使用到.有时候我们的项 ...
 - Codeforces Round #332 (Div. 2)C. Day at the Beach  树状数组
			
C. Day at the Beach One day Squidward, Spongebob and Patrick decided to go to the beach. Unfortuna ...
 - luogu3225 [HNOI2012]矿场搭建
			
题目大意 给出一个有$n(n\leq 500)$个节点的无向图,一个满足条件的点集$V$会使得对于图中的每一个节点$u$,满足路径起点为$u$终点$v\in V$的路径集合$P_u$中总存在至少两条路 ...
 - HDU 2665(主席树,无修改第k小)
			
Kth number Time Limit: 15000/5000 MS (Java/Others) ...
 - HTTP权威协议笔记-10.HTTP-NG
			
1.HTTP发展中存在的问题 复杂性 其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能 高延时.低吞吐 ...
 - hdu4405Aeroplane chess(概率与期望dp)
			
Aeroplane chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...