IO流(一)字节流
1:io流体系:对数据进行读写操作。所以IO不是读就是写咯。
2:io流的相关的类:java.io包。
有关IO的操作都会产生IOException异常
3:io:参照物是程序,
i:input.进来,读取数据到程序中。
o:output:出去,将数据从程序中写出去。
4:io流的分类,相关的类都会有相应的单词。
4.1:从数据的流向分。个人理解为就是内存和硬盘之间的数据交换,内存上的数据是暂时性的,而硬盘上的数据是永久性的。
Input(输入):读取数据,数据往程序中流。或者说:将硬盘上的数据放到内存上
Output(输出):写出数据,将数据从程序中写出去。或者说:将内存上的数据放到硬盘上
4.2:字节流和字符流
Stream:字节流,所有的数据都可以用字节流操作。计算机真正能识别的就是010101这些东西,8个0或者1组合成位,8位就是一个字节了。
Reader或者Writer:字符流。字符流是在字节流的基础上加了编码机制。只能对文字进行操作,虽说是文字,更贴切的说是文本文件,并不包括.doc等富文本文件,因为这些文件里面可以放图片或者其他的非文字内容。不能够对图片或者音频文件进行操作。
InputSteam:读取字节流。OutputStream:输出字节流。
Reader:读取字符流, Writer:写出字符流。
5:文件字节流
OutputStream,:抽象类
文件输出字节流:FileOutputStream:节点流,跟目标设备相关联。
实例一:
import java.io.FileOutputStream;
import java.io.IOException; public class FileOutputStreamDemo1 { public static void main(String[] args) throws IOException {
//1.创建文件输出流对象,参数为全路径名
FileOutputStream fos = new FileOutputStream("e:\\aa.txt");
//2.写出数据
//2.1准备数据
String str = "要写出的数据";
//2.2将数据转为字节数组的形式
byte[] b = str.getBytes();
//3.0将数据按照一个个字节地写出目标文件中
/*for(int i=0; i<b.length; i++){
fos.write(b[i]);
}*/
//3.1以下是将整个数组输出去,和3.0可到达相同的效果
fos.write(b);
//4.释放资源
fos.close();
} }
文件输出字节流示例一
BufferedInputStream:处理流,必须先有节点流。为了增加效率。处理的方式是将节点流包装起来
public static void testBufferedOutputStream() throws IOException{
//在使用带缓冲区的字节流的时候先要有一个节点流作为参数,或者说先指定一个目标文件
FileOutputStream fos = new FileOutputStream("d:\\test.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos); //将以下文字写到目标文件中去
String str = "这几个文字即将通过带缓冲区的字节流写到一个文本文件中";
bos.write(str.getBytes());
//写完之后记得要刷新才能真正写入到文件中,不然还会保存在缓冲区里,直到释放资源
bos.flush();
//释放资源(关闭流)
bos.close(); }
带缓冲区的字节流
InputStream:抽象类。
文件输入字节流:FileInputStream:节点流,和要读取那个文件关联起来
import java.io.FileInputStream;
import java.io.IOException; public class FileInputStreamDemo1 {
public static void main(String[] args) throws IOException {
//1.创建字节输入流对象
FileInputStream fis = new FileInputStream("e:\\bb.txt");
//2.开始读取数据
// System.out.println((char)fis.read());
int b;
while((b=fis.read())!=-1){
System.out.print((char)b);
}
fis.close();
}
}
文件字节输出流
BufferedOutputStream:带缓冲区的。也是为了增加效率,处理的方式是将节点流包装起来
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /*
* 将一个文件的文字输出到控制台
*/
public class BufferedInputStreamDemo1 { public static void main(String[] args) { FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream("d:\\aa.txt");
bis = new BufferedInputStream(fis);
//byte数组用来装读取到的数据
byte[] b = new byte[1024];
int len = -1;
while((len = bis.read(b))!=-1){
System.out.println(new String(b, 0, len));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
} } }
带缓冲区的文件字节输入流
6:字节流:在文件系统中,任何文件都是以二进制形式存储的,二进制用位体现(8位为一个二进制单元),8位=1字节,所以字节流可以处理任何文件。
6.1字节流常用的一些类:
6.1.1输入流read(), 读到末尾返回-1
常用read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
FileInputStream:文件输入流
BufferedInputStream:带缓冲区的输入流,先要传入一个节点流(输入流)作为参数
6.1.2输出流write()
常用write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off
开始的 len
个字节写入此文件输出流。
FileOutputStream:文件输入流
BufferedOutputStream:带缓冲区的输入流,先要传入一个节点流(输入流)作为参数
结合输入输出流写一个文件复制的工具:
public static boolean copyFile( String filePath,String target){ boolean flag = false;
//输出流,将数据写入到目标文件中
FileOutputStream fos = null;
//输入流,将要用的文本拿到程序中
FileInputStream fis = null;
//读取文本
byte[] b = new byte[1024];
//每次读取字符数据的有效长度
int length = -1; try {
fis = new FileInputStream(filePath);
fos = new FileOutputStream(target);
/*
* fis.read(b):从fis关联的文件中每次读取 1024 个字节,
* 并把读取到的字节数据保存这个数组里面,
* 但是这个文件并不是只有1024 这个么大,有可能要读多次,所以要用循环
* 寻到的条件是读到文件没有得读了,就是读到最后了就不读了,
* 读到末尾的返回值是-1,如果返回值是-1则停止循环
*
*/
while((length=fis.read(b)) != -1){//读到文件末尾就返回-1,不在往下读取
//将读到的数据写入目标文件中
fos.write(b, 0, length);
fos.flush();//将数据刷到目标文件
}
System.out.println("文件复制成功!");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally{
//关闭释放资源
try {
fos.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
flag = true;
return flag;
}
IO流(一)字节流的更多相关文章
- java io流(字节流)复制文件
java io流(字节流) 复制文件 //复制文件 //使用字节流 //复制文本文件用字符流,复制其它格式文件用字节流 import java.io.*; public class Index{ pu ...
- IO流(字节流复制)01
package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...
- JavaSE学习笔记(14)---File类和IO流(字节流和字符流)
JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...
- 【JAVA IO流之字节流】
字节流部分和字符流部分的体系架构很相似,有四个基本流:InputStream.OutputStream.BufferedInputStream.BufferedOutputStream,其中,Inpu ...
- Java笔记(二十六)……IO流上 字节流与字符流
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- 【Java IO流】字节流和字符流详解
字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...
- JavaSE(十二)之IO流的字节流(一)
前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要.但是其实并不难,因为他们都有固定的套路. 一.流的概念 流是个抽象的概念,是对输入输出设备的抽象,Java程序中 ...
- IO流之字节流知识总结
IO流分为字符流和字节流. 字节流;可以读取任何文件,电脑以字节的方式储存 字符流:用来读取字符. 下面是我总结的思维导图. 相关练习代码 public class Demo { @Test publ ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- java的IO流,字节流和字符流
java操作文件都是通过流来处理的,(其实其他很多语言也是这样) 第一:java的IO流,分为:输入流 和 输出流(这真是废话,这是从流向的角度来说的) 第二:java的所有IO流,只分为:字节流 和 ...
随机推荐
- android多lib库工程的自动批量构建--编写ant脚本
基本配置--build.properties 首先编写基本配置build.properties ,主要配置如下: android sdk所在目录 编译项目所使用的项目版本 Jdk所在目录 以及签名时, ...
- [LeetCode 题解]: Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- RobotFramework的Setup和Teardown
测试套件级别的Setup会在本套件测试用例集合执行前先执行,同理Teardown会在本组所有用例执行完成后运行 测试用例级别的Setup会在本条测试用例执行前先执行,同理Teardown会在本条用例执 ...
- django+echarts
思路: 统一返回数据类型为json,然后前端发起Ajax请求后台数据接口 views.py def count_blog(request): # 下面等价于:select distinct auth, ...
- android hook getdeceiveid
很多手机软件使用了手机绑定.QQ,微信等.如果使用了不同的设备,则需要验证码. 要用一台手机来模拟与另一台手机一样环境,估计hook 系统的相关函数可以实现. 想着应该有现成的软件的,例如 smart ...
- SQLite Mysql 模糊查找(like)
select UserId,UserName,Name,Sex,Birthday,Height,Weight,Role from xqhit_Users where UserName like &qu ...
- windows部署PHP开发的cms系统
近日,由于公司服务器中了病毒,导致公司官网上的源代码文件被篡改,而且也被谷歌标记为危险网站,而且病毒很顽固,难已删除,迫不得已只好将服务器系统重做,数据全部格式掉. 数据全部都没有,网站当然要重新发布 ...
- Data Base oracle常见错误及解决方案
Data Base oracle常见错误及解决方案 一.TNS协议适配器错误: 原因: 此问题的原因都是由于监听没有配置好. 解决: 1.打开oracle工具Net Manager,删除服务及监听,重 ...
- day03.2-内置函数的使用
1. 取绝对值函数,abs() res = abs(-1) print(res) """ 运行结果:1 结果分析:计算-1的绝对值 """ ...
- Elasticsearch NEST使用指南:映射和分析
NEST提供了多种映射方法,这里介绍下通过Attribute自定义映射. 一.简单实现 1.定义业务需要的POCO,并指定需要的Attribute [ElasticsearchType(Name = ...