java_IO流小结
字符流和字节流的主要区别:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

字节流:
1、通过字节流写数据
code:
package com.test; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException; public class WriteByteStream { public static void main(String[] args) {
try { FileOutputStream fos = new FileOutputStream("textw.txt");
String outString = "write 123456写出数据";
byte output[] = outString.getBytes("UTF-8");
fos.write(output);
fos.close(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
2、通过字节流读数据:
code:
package com.test; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException; public class ReadByteStream { public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("text.txt");
byte input[] = new byte[];
fis.read(input); String inputString = new String(input, "UTF-8");
System.out.println(inputString);
fis.close(); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }
3、使用字节流读写数据
code:
package com.test; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class CopyByByteStream { public static void main(String[] args) {
try { FileInputStream fis = new FileInputStream("movie.mp4");
FileOutputStream fos = new FileOutputStream("movie_new.mp4"); byte input[] = new byte[];
long before = System.currentTimeMillis();
int count = ;
while (fis.read(input) != -) {
fos.write(input);
count++;
}
fos.flush();
fis.close();
fos.close();
System.out.println(System.currentTimeMillis()-before+"ms");
System.out.println("done"); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
4、使用带缓冲的字节流读写数据(字节流模板)
code:
package com.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class ReadByBufferedByteStream { public static void main(String[] args) {
try { FileInputStream fis = new FileInputStream("movie.mp4");
BufferedInputStream bis = new BufferedInputStream(fis,);
FileOutputStream fos = new FileOutputStream("moive_new.mp4");
BufferedOutputStream bos = new BufferedOutputStream(fos,);
//大型文件对应的数组可以大一些,小文件对应的数组小一些
byte input[] = new byte[];
int count = ;
long before = System.currentTimeMillis();
while (bis.read(input) != -) {
bos.write(input);
count++;
}
bos.flush();
bis.close();
fis.close();
bos.close();
fos.close();
System.out.println(System.currentTimeMillis()-before+"ms");
System.out.println("读取了:"+count+"次"); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
字符流:
1、使用字符流读写数据
code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException; public class RWByCharStream { public static void main(String[] args) {
try { //File file = new File("java.txt");
FileInputStream fis = new FileInputStream("java.txt");
FileOutputStream fos = new FileOutputStream("java_new.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
char input[] = new char[];
int l = ;
while ((l = isr.read(input)) != -) {
//String inputString = new String(input,0,l);
osw.write(input,,l);
}
isr.close();
fis.close();
osw.close();
fos.close();
System.out.println("done"); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } }
2、使用带有缓冲的字符流读写数据(字符流模板)
code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException; public class RWByBufferedCharStream { public static void main(String[] args) {
try { //File file = new File("java.txt");
FileInputStream fis = new FileInputStream("java.txt");
FileOutputStream fos = new FileOutputStream("java_new_buff.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedReader br = new BufferedReader(isr);
//BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(osw,true); String input;
while ((input = br.readLine()) != null) {
//bw.write(input);
pw.println(input);
}
br.close();
//bw.flush();bw.close();
pw.close();
isr.close();
fis.close();
osw.close();
fos.close();
System.out.println("done"); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
java_IO流小结的更多相关文章
- java IO 流小结
java IO 流小结 java流类图结构 流的分类 按方向 输入流 输出流 按类型 字节流 字符流 结论:只要是处理纯文本数据,就优先考虑使用字符流. 除此之外都使用字节流.
- Java_IO流_File类配合使用(其中用到了递归)
第一:Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.以下对Java File文件操作以及常用方法进行简单介绍 案例1:遍历出指定目录下的文件夹,并输出文件名 stat ...
- Java API —— IO流小结
练习题: 1.复制文本文件 package cn.itcast_01; import java.io.BufferedReader; import java.io.BufferedWriter; im ...
- javaIO流小结(1)
UTF-8的字节占多少个字节? 常用中文字符用utf-8编码占用3个字节(大约2万多字),超大字符集中要占4个字节.在内存中是2个字节,真正写到硬盘上面的是3个字节. GBK.GB2312汉字占2个字 ...
- java_IO流之 NIO
NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度. 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生 ...
- (27)IO流小结
字节流 输入字节流: ---------| InputStream 所有输入字节流的基类. 抽象类 ------------| FileInputStream 读取文件的输入字节流 --------- ...
- java_IO流
IO流概述及分类 Reader InputStream OutputStream Writer都是Object的直接子类 字节流: 字节输入流 InputStream(抽象类) |---File ...
- Java_IO流_抽象类
一. 概念 流动,从一端流向另一端,源头与目的地 以程序为中心,程序与 数组/文件/网络连接/数据库, 二. io流分类 流向:输入流与输出流 数据 :字节楼:二进制,所有文件都可以操作,包括 ...
- C++ IO流小结
撒花庆祝下,终于看完了(C++Primer)第一部分,即将进入第二部分! IO部分,最基本的是iostream(istream.ostream),子类有fstream(ifstream.ofstrea ...
随机推荐
- 集成容联:Warning! ivar size mismatch in PSUICollectionView_ - can't change the superclass.解决办法
这个警报其实是无影响的. 解决方案: PSTCollectionView.m 的 char filler[200] 替换成char filler[300]
- EA+svn实现UML的版本号控制
一.安装软件 1.VisualSvn Server svnserver 2.Tortoise Svn svnclient 3.Slik-Subversion-1.7.8-x64版本号控制插件 4.En ...
- [Typescript] Typescript Enums vs Booleans when Handling State
Handling state with Typescript enums, instead of booleans, is preferred because:- Enums are more rea ...
- Nested Class Templates
Templates can be defined within classes or class templates, in which case they are referred to as ...
- NS2仿真:两个移动节点网络连接及协议性能分析
NS2仿真实验报告2 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日 一.实验环境(网络平台,操作系统,网络拓扑图 ...
- WPF合并资源字典
1.合并多个外部资源字典成为本地字典 示例代码 <Page.Resources> <ResourceDictionary> <ResourceDictionary.Mer ...
- Fragment的生命周期&同一Activity下不同Fragment之间的通信
Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方 ...
- Oracle怎样方便地查看报警日志错误
由于报警日志文件很大,而每天都应该查看报警日志(查看有无“ORA-”,Error”,“Failed”等出错信息),故想找到一种比较便捷的方法,查看当天报警日志都有哪些错误. 在网上查了几天的资料,尝试 ...
- iOS字体 UIFont 字体名字大全
打印所有的字体 NSArray *familyNames = [UIFont familyNames];//所有的家族名称 for(NSString *familyName in familyName ...
- 自定义函数标签(JSTL)
创建自定义函数标签步骤: 1.创建类,并且方法只能是静态 public static void operation(calculator cal) 2.书写tld <taglib xmlns=& ...