Java之IO流概述和File基本操作
IO流图解
IO(in / out)流的分类
流向:
输入流 读取数据
输出流 写出数据
数据类型:
字节流
一个字节占8位, 以一个字节为单位读数据
八大数据类型所占字节数:
byte(1), short(2), int(4), long(8),float(4), double(8),boolean(1),char(2)
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流
一个字符占两个字节, 以一个字符为一个单位
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
字节流的基本抽象类
InputStream OutputStream
字符流的基本抽象类
Reader Writer
功能:
节点流: 只有一个根管道套在文件上进行传输
处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层
File类基本操作
- File file=new File("D:\\0603\\03.txt");
- File file2=new File("D:\\06\\03\\01");
- File file3=new File("D:\\0603\\06.txt");
- System.out.println(file.exists());//判断文件是否存在,返回Boolean值
- System.out.println(file.mkdir());//创建文件夹,只能创建一层,返回Boolean值
- System.out.println(file2.mkdirs());//创建文件夹,创建多层,返回Boolean值
- System.out.println(file3.createNewFile());//创建新文件,此处需处理异常,返回Boolean值
- System.out.println(file3.delete());//删除文件,返回Boolean值
- File file4=new File("D:\\0603\\03_new.txt");
- System.out.println(file.renameTo(file4));//文件改名,传入另一个文件
- System.out.println(file.getName());//返回名
- System.out.println(file.getPath());//返回文件路径
- System.out.println(file.isDirectory());//返回是否文件夹
- System.out.println(file.isFile());//返回是否文件
- System.out.println(file.length());//返回文件长度
- File[] files=f.listFiles(); //获取路径下的文件名
查找并输出文件夹下文件夹及文件名:
- package com.hanqi.maya.util;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- public class TestFile {
- public static void main(String[] args) {
- File file=new File("D:\\");
- filesum(file,1);
- }
- public static void filesum(File f,int len){
- if(f.exists()){//判断路径是否存在
- File[] files=f.listFiles(); //获取路径下的文件名
- for(File fi:files){ //循环输出文件名
- if(fi.isDirectory()){ //判断是否文件夹
- printBlank(len);
- System.out.println(fi.getName());
- filesum(fi,len+1); //继续调用自身
- }else{
- printBlank(len); //输出空格
- System.out.println(fi.getName()); //获取当前文件夹名
- }
- }
- }else{
- System.out.println("文件不存在!!!");
- }
- }
- public static void printBlank(int len){
- for (int i = 0; i < len; i++) {//输出. 以区分文件夹层次
- System.out.print(". ");
- }
- }
- }
I/O 流基本操作
InputStream的基本方法:
int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回,可以用 char 强转成字符
int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理)
int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节数
close(): 关闭资源
OutputStream的基本方法:
void write(int b)
void write(byte[] b)
int wirte(byte[] buffer, int offset, int length)
close()
flush(): 将缓冲区中的文件全部写出
在使用流的时候:先flush, 再close
Reader的基本方法:
int read()
int read(char[] c)
int read(char[] c, int offset, int length)
close()
Writer的基本方法:
void write()
void write(char[] c)
void write(char[] c, int offset, int length)
// 直接写一个字符串出去, 字符串里面的有一个方法s.toCharArray(), 查API
void write(String s)
void write(String s, int offset, int length)
close()
flush()
FileInputStream
FileOutputStream
BufferedReader
readLine()---每次调用就会读取一行
BufferedWriter
writeLine(String s)---每次调用写出一行
例子:
- package com.hanqi.maya.util;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- public class Test2 {
- public static void main(String[] args) {
- File file=new File("E:\\ceshi.txt");
- File ofile=new File("E:\\cewshi2.txt");
- int a=-1;//用作判断
- try {
- InputStream in =new FileInputStream(file);
- OutputStream out = new FileOutputStream(ofile);
- while((a=in.read())!=-1){//将下一个字符赋给a并输出和写入,如果没有下一个 则a=-1结束while循环
- System.out.print((char)a);//强转输出字符
- out.write(a);//写入到文件
- }
- in.close();
- out.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- package com.hanqi.maya.util;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.Reader;
- import java.io.Writer;
- public class Test3 {
- public static void main(String[] args) {
- File file=new File("E:\\ceshi.txt");
- File ofile=new File("E:\\cewshi8.txt");
- Reader r=null;
- try {
- r=new FileReader(file);
- Writer w=new FileWriter(ofile);
- BufferedReader br=new BufferedReader(r);
- BufferedWriter bw=new BufferedWriter(w);
- String s=null;
- while((s=br.readLine())!=null){
- System.out.print(s);
- bw.write(s);
- bw.flush();//如果写入需要用 flush 刷新流,否则会在缓冲区不写入文件
- }
- br.close();
- bw.close();//调用该方法前会自动调用 flush
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
Java之IO流概述和File基本操作的更多相关文章
- Java基础-IO流对象之File类
Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...
- Java 之 IO流概述
一.IO 流 我们知道存在硬盘中数据是永久保存的,而在内存中的数据只是临时的,内存中的数据可以存入硬盘中,硬盘中的数据也也可以读入内存中. 我们把这种数据的传输,可以看做一种数据的流动,按照流动的方法 ...
- Java之IO流用法总结
Java的IO流概述:1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输.如读/写文件,网络通讯等.2.Java程序中,对于数据的输入/输出操作以“流( ...
- Java API —— IO流( FileInputStream & FileOutputStream & BufferedInputStream & BufferedOutputStream )
1.IO流概述 · IO流用来处理设备之间的数据传输 · 上传文件和下载文件 · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中 2.IO ...
- Java 的 IO 流
接着上一篇的 “Java 的 File 类” 的随笔,在File类的基础上,我们就走进Java的IO流吧. 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在 ...
- Java进阶 | IO流核心模块与基本原理
一.IO流与系统 IO技术在JDK中算是极其复杂的模块,其复杂的一个关键原因就是IO操作和系统内核的关联性,另外网络编程,文件管理都依赖IO技术,而且都是编程的难点,想要整体理解IO流,先从Linux ...
- 【重学Java】IO流
IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...
- Java基础——IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
- Java - 文件(IO流)
Java - 文件 (IO) 流的分类: > 文件流:FileInputStream | FileOutputStream | FileReader | FileWriter ...
随机推荐
- react 基础
一.组件 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的extends React.Component定义的组件 React.Component是以E ...
- Java对象与类中的一个小练习
一直在Eclipse里做练习.是做一个练习,执行一个的那种.刚刚学习了Java的对象与类,练习中把类和执行放在同一包下的两个.java文件里面了.是可以执行的.(Get) 相关代码: public c ...
- Safari Private 模式下 localStorage 的问题
现如今好多浏览器都有「隐身模式」,Safari 管这叫「Private Browing」,国内各种牌子的套壳浏览器叫「无痕浏览」.私以为从命名上来说,倒是国内更中文一些. 这种模式下浏览网页踏雪无痕, ...
- 一篇文章带你快速入门createjs
开始用createjs这个框架的时候,发现网上的相关教程还是挺少的,所以写一篇文章,方便日后查看. createjs简介 官网:http://www.createjs.cc/ createjs中包 ...
- octomap中3d-rrt路径规划
路径规划 碰撞冲突检测 在octomap中制定起止点,目标点,使用rrt规划一条路径出来,没有运动学,动力学的限制,只要能避开障碍物. 效果如下: #include "ros/ros.h&q ...
- Css实现一个简单的幻灯片效果页面
使用animation动画实现一个简单的幻灯片效果. 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 2 ...
- Treasure Hunt
Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 用netsh wlan命令行解决“Win10下WLAN不自动登陆”问题
系统崩溃了,找了一个版本Windows 10重装后,发现进入系统后不会自动连接自己家的Wifi,每次都要手动点"登录",烦不胜烦. 于是百度.Google一起上,找解决方案,然后所 ...
- AospExtended K3 Note最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持
AospExtended 最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持 之前用过1629开发版等,体验了很 ...
- StructureMap经典的IoC/DI容器
StructureMap是一款很老的IoC/DI容器,从2004年.NET 1.1支持至今. 一个使用例子 //创建业务接口 public interface IDispatchService { } ...