【转载】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流主要用于硬板.内存.键盘等处理 ...
随机推荐
- 虚拟机+centOS挂载ISO步骤
https://blog.csdn.net/u010612373/article/details/52240447
- A*算法学习(转)
A*启发式搜索算法详解 人工智能 1导言 1.1 算法 1.2 Dijkstra算法与最佳优先搜索 1.3 A*算法 2 启发式算法 2.1 A*对启发式函数的使用 2.2 速度还是精确度? 2.3 ...
- gap lock/next-key lock浅析Basic-Paxos协议日志同步应用
http://www.cnblogs.com/renolei/p/4673842.html 当InnoDB在判断行锁是否冲突的时候, 除了最基本的IS/IX/S/X锁的冲突判断意外, InnoDB还将 ...
- python初码
第一次用python写代码,有一些不习惯,比如if.else.for.def后要加:.假设换一个编译工具可能会好点,否则仅仅能每次执行的时候查看错误信息.它的优点也正是这里不须要每条语句输入;.不须要 ...
- maven install:install出现的错误提示
maven install:install出现的错误提示 [INFO] --- maven-install-plugin:2.4:install (default-cli) @ maven028 -- ...
- windows脚本(VBS)之cmd命令行的妙用
windows脚本(VBS)之cmd命令行的妙用 (2009-08-06 13:40:55) 转载▼ 标签: 脚本 cmd 命令行 vbs js 简单 公式 windows it 分类: 计算机 脚本 ...
- 【POJ 1201】 Intervals(差分约束系统)
[POJ 1201] Intervals(差分约束系统) 11 1716的升级版 把原本固定的边权改为不固定. Intervals Time Limit: 2000MS Memory Limit: ...
- Extension Methods (C# Programming Guide)
https://msdn.microsoft.com/en-us//library/bb383977.aspx private static void Dump(this ArraySegment&l ...
- spring:使用<prop>标签为Java持久属性集注入值
spring:使用<prop>标签为Java持久属性集注入值 使用 spring 提供的<prop>为Java持久属性集注入值,也就是向 java.util.Propertie ...
- WPF:通过Window.DataContext实现窗口间传值
通过Window.DataContext实现窗口之间的传值,特别是跨窗口控件的联动,具有无可比拟的优势.实现方法如下: 1. MainWindow.xaml,在Window.DataContext中 ...