Java IO流(三)

字节 字符

输入 InputStream Reader

输出 OutputStream Writer

**********************字节写***********************************

FileOutputStream

1.public void write(int b) throws IOException

每次写1个字节

2.public void write(byte[] b) throws IOException

每次写1个字节数组

知识点:

1. 写的时候 如果运行2次,第二次还会创建一个新的文件,重新写(相当于覆盖)

建立通道的时候 传入一个boolean类型的变量 true 表示追加

2. 产生的文件的编码方式 由 getBytes("utf-8") 决定

演示代码:

package com.chapter13.演示字节写;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月24日 上午9:37:41
* 功能:演示字节写
*/
public class TestFileOutputStream {

public static void main(String[] args) {

//一.建立通道
String s = "你好";

byte[] byteArr = null;
try {
byteArr = s.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//写的时候 如果写入的文件不存在 会先创建这个文件
FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\\jidi16\\io\\HelloIO.txt",true);//true 追加
} catch (FileNotFoundException e) {

System.out.println("文件夹没有找到");
e.printStackTrace();
System.exit(-1);
}

//二.利用write写
try {
//fos.write(65);
fos.write(byteArr);
} catch (IOException e) {
System.out.println("写入失败");
e.printStackTrace();
}finally{
//三.关闭通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}
}

}
}

**********************字符写***********************************

FileWriter

常用方法

1. public void write(int b) throws IOException

每次写1个字符

2. public void write(char[] b) throws IOException

每次写1个字符数组

3. public void write(String s) throws IOException

每次写1个字符串

演示代码:

package com.chapter13.演示字节写;

import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月24日 上午9:54:57
* 功能:演示字符写
*/
public class TestFileWriter {

public static void main(String[] args) {

//一.建立通道
char c = ‘你‘;
char[] charArr = {‘你‘,‘好‘,‘啊‘};
String s = "你好世界";

//写的时候 如果写入的文件不存在 会先创建这个文件
FileWriter fos = null;
try {
fos = new FileWriter("d:\\jidi16\\io\\HelloIO.txt",true);//true 追加
} catch (IOException e) {

System.out.println("文件夹没有找到");
e.printStackTrace();
System.exit(-1);
}

//二.利用write写
try {

//fos.write(c);//每次写一个字符
//fos.write(charArr);//每次写一个字符数组
fos.write(s);//每次写一个字符串
} catch (IOException e) {
System.out.println("写入失败");
e.printStackTrace();
}finally{
//三.关闭通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}
}

}
}

***********************************文件复制***********************************

原理: 读进来 马上把它写出去

演示代码:

package com.chapter13.演示字节写;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月21日 下午2:10:56
* 功能:演示文件复制
*/
public class TestFileCopy {

public static void main(String[] args) {

//一.建立通道
FileInputStream fis = null;
int b;

try {
fis = new FileInputStream("d:\\jidi16\\io\\test.jpg");
} catch (FileNotFoundException e) {
System.out.println("文件没有找到");
e.printStackTrace();

System.exit(-1);
}

FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\\jidi16\\io\\copy.jpg");
} catch (FileNotFoundException e1) {

System.out.println("文件夹不存在");
e1.printStackTrace();
}

byte[] byteArr = new byte[1024];

long startTime = System.currentTimeMillis();//获取举例1970年1月1日 00:00:00 的毫秒数

//二.利用read循环读

//fis.read() 每次读一个字节 把读到的这1个字节 存到int类型的低8位中
// read() 如果读到了文件末尾 返回-1
try {
while((b=fis.read(byteArr))!=-1){

fos.write(byteArr);
}
} catch (IOException e) {
System.out.println("复制文件失败");
e.printStackTrace();
}finally{

//三.关闭通道
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
System.out.println("关闭fis通道失败");
e.printStackTrace();
}
}

if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}

long endTime = System.currentTimeMillis();//获取举例1970年1月1日 00:00:00 的毫秒数

System.out.println("一共使用了" + (endTime-startTime) + "毫秒");
System.out.println("复制完成");
}
}
}

原文地址:https://www.cnblogs.com/MrTanJunCai/p/9906826.html

时间: 2024-10-24 23:11:53

Java IO流(三)的相关文章

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

装饰器模式及JAVA IO流例子★★★☆☆

一.什么是装饰模式 通过关联机制给类增加行为,其行为的扩展由修饰对象来决定: 二.补充说明 与继承相似,不同点在于继承是在编译期间扩展父类,而装饰器模式在运行期间动态扩展原有对象: 或者说,继承是对类进行扩展,装饰模式是对对象进行扩展: 三.角色 抽象构件 具体构件 抽象装饰类 具体装饰类 说明:具体构件.抽象装饰类.具体装饰类的共同父类是抽象构件,具体装饰类继承抽象装饰类并在运行期间装饰具体构件: 四.例子 例子说明: 画家接口Painter,为抽象构件,有两个方法,获取画家描述信息及绘画:

【Android】数据存储-java IO流文件存储

1.数据持久化:将在内存中的瞬时数据保存在存储设备中.瞬时数据:设备关机数据丢失.持久化技术提供一种机制可以让数据在瞬时状态和持久状态之间转换. 2.Android中简单的三种存储方式:文件存储.SharedPreference 存储以及数据库存储. 1.文件存储 :不对数据作任何处理,将数据原封不动地存储到文件中,适合存储一些简单的文本数据和二进制数据. a.将数据存储到文件中 Context类提供了一个openFileOutput()方法,可以用于将数据存储到文件中.这个方法接收两个参数,第

Java IO流学习总结

Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流的区

Java IO流学习总结(转)

原文地址:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符

Java IO流详尽解析(转自 http://www.2cto.com/kf/201312/262036.html)

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表.字节流和字符流的区别

黑马程序员-Java IO流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!-- 一.概述 Java中与IO相关的类有很多,都集中在java.io中,都是以流的形式操作的,流是有一定的顺序,像一个管道一样,它的本质是传输数据.根据数据类型的不同可以分为字节流和字符流,根据流向的不同可以分为输入流和输出流. 字符流:因为数据有不同的编码,可以对字符进行不同的操作,其本质还是基于字节流,然后再查询相应的码表.一般用于处理纯文本数据. 字节流:可以处理所有类型数据,二进制文件(图片,音频等). 输入

学习笔记-java IO流总结 转载

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

JAVA IO 流的总结

来自http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html,写的很详细 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 [字符流和字节

seall的Java IO流总结

Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流的区别: 读写单位不同:字节流以