19 IO流

原创 2015年11月17日 17:25:35
*************************
*******十九 IO流*******
*************************
**********************
*******基本内容*******
**********************
父类 常用子类:
字符流: Reader InputStreamReader->FileReader,BufferedReader
Writer OutputStreamWriter->FileWriter,BufferedWriter
字节流: OutputStream FileOutputStream,DataOutputStream,ObjectOutputStream,BufferedOutputStream,ByteArrayOutputStream
InputStream FileInputStream,DataInputStream,ObjectOutputStream,BufferedInputStream,ByteArrayInputStream
打印流: PrintStream 常用子对象:System.out,System.in,System.err
随机访问文件的读取和写入: RandomAccessFile
==============================================================================================
********************************
字节流:OutputStream,InputStream
********************************
一、字节流: FileInputStream,FileInputStream


//文件读写
import java.io.*;
public class Text1 {
public static void main(String[] args) {
FileInputStream fis=null;
FileInputStream fos=null;
        try {
fis=new FileInputStream("e:\\temp\\from.zip");
fos=new FileOutputStream("e:\\temp\\to.zip");
byte [] buffer=new byte[1024];
while (true) {
int temp = fis.read(buffer,0,buffer.length);
if(temp==-1){
break;
}
fos.write(buffer,0,temp);
}
} catch (Exception e) {
e.printStackTrace();
}
        finally{
        try {//捕获io流关闭异常
fis.close();
           fos.close();
} catch (Exception e2) {
}
        }
}
}
二、字节缓冲流:BufferedInputStream,BufferedOutputStream--------------------------------------


//文件读写
public class Text2 {
public static void main(String[] args) {
String fileName="e:\\老罗视频Android01-09.zip";
String toName="e:\\temp\\老罗视频Android01-09.zip";
FileInputStream fis=null;
FileOutputStream fos=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
fis=new FileInputStream(fileName);
fos=new FileOutputStream(toName);
bis=new BufferedInputStream(fis);
bos=new BufferedOutputStream(fos);
long time1=System.currentTimeMillis();//打印时间
while (true) {
byte[] buffer=new byte[1024];
int temp=bis.read(buffer,0,buffer.length);
if (temp==-1) {
break;
}
bos.write(buffer,0,temp);
}
long time2=System.currentTimeMillis();
System.out.println((time2-time1)/60000);//求时间差
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bis.close();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三、数据流: DataInputStream,DataOutputStream
public class Text3 {
public static void main(String[] args) throws IOException {
int x=8;
char ch='a';
double f=5.6;
DataOutputStream dos=new DataOutputStream(new FileOutputStream("e:\\temp\\dis.txt"));
DataInputStream dis=new DataInputStream(new FileInputStream("e:\\temp\\dis.txt"));
dos.writeInt(x);
dos.writeChar(ch);
dos.writeDouble(f);
dos.close();
int getx=dis.readInt();//8
char getch=dis.readChar();//'a'
double getf=dis.readDouble();//5.6
}
}
四、对象数据流:ObjectInputStream,ObjectDataOutputStream--------------------------------------
//写入对象数据
public class Task4 {
public static void main(String[] args) throws Exception {
ObjectOutputStream obs=new ObjectOutputStream(new FileOutputStream("e:\\temp\\obs.txt"));
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("e:\\temp\\obs.txt"));
obs.writeObject(new Student("杨过",20,99));
obs.writeObject(new Student("小龙女",16,77));
obs.writeObject(new Student("小小龙女",11,77));
obs.writeObject(new Student("小小小龙女",7,77));
while(true){
try {
Student stu=(Student)ois.readObject();
System.out.println(stu);
} catch (Exception e) {
break;
}
}
}
}
class Student implements Serializable{//实现序列化接口/*Externalizable*/
String name;
int age;
double score;
transient String id;//不希望属性被序列化,不会在写入文件时保存
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
}
}
/*class Student1 implements Externalizable{//自定义序列化
String name;
int age;
double score;
transient String id;//不希望属性被序列化,不会在写入文件时保存
public Student1() {

}
public Student1(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
System.out.println("反序列化");
this.name=(String)in.readObject();
this.age=in.readInt();
this.score=in.readDouble();
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
System.out.println("序列化");
out.writeObject(name);
out.writeInt(age);
out.writeDouble(score);
}
}*/
五、内存流 ByteArrayOutputStream,ByteArrayInputStream-----------------------------------------
public class Text5 {
public static void main(String[] args) throws IOException {
ByteArrayInputStream bis=new ByteArrayInputStream("6217001820008037164".getBytes());
ByteArrayOutputStream bos=new ByteArrayOutputStream();
int m=0;
while(true){
int ch=bis.read();//bis.read(byte[],0,len)
if(ch==-1){
break;
}
/*int retch;
if (ch<='z'&&ch>='a') {
retch=Character.toUpperCase((char)ch);
}else{
retch=ch;
}*/
bos.write(ch);//bis.write(byte[],0,len)
m++;
if (m==4) {
bos.write(" ".getBytes());
m=0;
}
}
System.out.println(new String(bos.toByteArray()));
}
}
==============================================================================================
********************************
字符流:Reader,Writer
********************************
一、字符流: FileReader FileWriter:--------------------------------------------------------


//文本文件复制
public class CopyFile {
public static void main(String[] args) {
File from=new File("e:\\temp\\from2.txt");
File to=new File("e:\\temp\\to3.txt");
FileReader fr=null;
FileWriter fw=null;
try {
fr=new FileReader(from);
fw=new FileWriter(to);
char[] buffer=new char[100];
while (true) {
int ret=fr.read(buffer,0,buffer.length);
if (ret==-1) {
break;
}
fw.write(buffer,0,buffer.length);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fr.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
二、字符缓冲流:BufferedReader,BufferedWriter------------------------------------------------- 


//文本文件读写
public class Text2 {
public static void main(String[] args) 
String fileName="e:\\temp\\from.txt";
String toName="e:\\temp\\to11.txt";
FileReader fr=null;
FileWriter fw=null;
BufferedReader br=null;
BufferedWriter bw=null;
try {
fr=new FileReader(fileName);
br=new BufferedReader(fr);
fw=new FileWriter(toName);
bw=new BufferedWriter(fw);
while(true){
String line=br.readLine();
if (line==null) {
break;
}
System.out.println(line);
bw.write(line,0,line.length());
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
br.close();
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三、字符转换流:InputStreamReader OutputStreamWriter------------------------------------------


//文件读写
public class Text3 {
public static void main(String[] args) throws IOException {
String srcfilename = "D:\\徐莎_备课\\java_day18\\安排.txt";
/* readLine();---BufferedReader对象的方法
* 构建BufferedReader对象需要Readerd对象参数
* 由于FileReader使用的默认字符集进行解码,不能用FileReader
* 可以用FileInputStream
* 考虑如何把FileInputStream转换成Reader的对象
* 可以使用转换流:InputstreamReader
* InputStreamReader(InputStream in, String charsetName) 
*/
FileInputStream fis = new FileInputStream(srcfilename);//原始流
InputStreamReader isr = new InputStreamReader(fis, "gb2312");//把字节流转换成字符流
BufferedReader br = new BufferedReader(isr);//创建装饰流对象  
String line = br.readLine();
System.out.println(line);  
line = br.readLine();
System.out.println(line);  
br.close();
}
}
==============================================================================================
********************************
打印流: PrintStream
********************************


public class PrintstreamDemo {
public static void main(String[] args) throws IOException {
int x = 5;
char ch = 'a';
double f = 2.2;
/*PrintStream pout = new PrintStream("print.txt");
pout.print(x);
pout.print(ch);
pout.print(f);*/
OutputStream fos = new FileOutputStream("print2.txt");
PrintWriter pout = new PrintWriter(fos);
// PrintWriter pout = new PrintWriter("print.txt");
pout.print(x);
pout.print(ch);
pout.print(f);
pout.flush();
System.out.println("hello!");//输出到文件:
System.out.println(x);
System.out.println(f);
}
}
//标准输出重定向
PrintStream out = new PrintStream("setout.txt");
System.setOut(out);
//标准键盘输入
static String input() throws IOException{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
return br.readLine();
}
********************************
随机读写: RandomAccessFile
********************************
public class Text1 {
public static void main(String[] args) {
RandomAccessFile re=null;
RandomAccessFile wr=null;
int i=0;
try {
re=new RandomAccessFile("e:\\temp\\丁当有一种勇气叫放弃.mp3","rw");
wr=new RandomAccessFile("e:\\temp\\copy.mp3","rw");
while(true){
byte[] buffer=new byte[1024];
re.seek(i*1024);
int len=re.read(buffer,0,buffer.length);
if (len==-1) {
break;
}
wr.seek(i*1024);
wr.write(buffer,0,len);
i++;
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
wr.close();
re.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
*************************
********The end**********
*************************

Java基础(19,20(1))IO流

------- android培训、java培训、期待与您交流! ---------- 十七.复制一个图片      虽然简单,但是考试会考 思路: 1.用字节读取流对象和图片关联。 2.用字节写入...
  • u011889786
  • u011889786
  • 2015年04月03日 21:58
  • 313

IO流学习笔记2——流的分类

Java的IO流是实现输入/输出的基础,按照不同的分类方式,可以将流分为不同的类型: 1、按照流的流向来分,可以分为输入流和输出流 输入流:只能从中读取数据,而不能向其写出数据。 输出流:只能向其写...
  • gnail_oug
  • gnail_oug
  • 2015年08月14日 14:18
  • 898

几种常用的IO流

之前我们学习了File类,对文件进行了操作,那么如果想对文件中的内容进行操作该怎么办呢?这就离不开流的概念了。流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的...
  • lfh15732626246
  • lfh15732626246
  • 2016年12月05日 17:43
  • 712

IO流的基本使用

IO流 |--字节流 |--字节输入流 InputStream int read():一次读取一个字节 ...
  • Demome
  • Demome
  • 2016年06月30日 16:37
  • 1231

Java中IO流常见的几种流

序列流 序列流合并文件 package com.cloud.day5; import java.io.File; import java.io.FileInputStream;...
  • dzy21
  • dzy21
  • 2016年07月19日 06:56
  • 3884

java IO流简单总结

java IO流简单小结
  • canot
  • canot
  • 2015年12月30日 16:09
  • 1373

详细讲解JAVA中的IO流

一、流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。      ...
  • qq_27376871
  • qq_27376871
  • 2016年09月13日 11:28
  • 1562

io流-多线程连接管道流

//io流-多线程连接管道流 import java.io.*;class Read implements Runnable//implements Runnable 实现Runnable接口 管道流...
  • blacop
  • blacop
  • 2016年08月01日 16:32
  • 228

Java中常见的IO流及其使用

Java中常见的IO流的介绍及使用: ByteArrayInputStream & ByteArrayOutputStream FileInputStream & FileOutputStream P...
  • sunqunsunqun
  • sunqunsunqun
  • 2015年07月09日 19:54
  • 3815

IO流的分类及常用案例

IO流的分类: 1、根据流的数据对象来分: 高端流:所有的内存中的流都是高端流,比如:InputStreamReader   低端流:所有的外界设备中的流都是低端流,比如InputStream,...
  • skyline813
  • skyline813
  • 2014年11月08日 15:25
  • 2118
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:19 IO流
举报原因:
原因补充:

(最多只允许输入30个字)