您的位置:首页 > 其它

史上最全IO框架二(字节流)

2016-07-18 11:38 176 查看
package com.itheima.filedemo;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

字节输出流OutputStream(写文件)

/**

* 字节输出流OutputStream(抽象类)

* @author Administrator

*

*/

public class OutputStreamDmeo {

public static void main(String[] args) {
// TODO Auto-generated method stub
write1();
write2();
}

/**
* 字节输出流的方式一:每次一个字节:一个字节一个字节的输出
*/
public static void write1(){
//创建一个文件输出流对象
try {
OutputStream out  = new FileOutputStream("E:\\1.txt");//可以传入一个File对象也可以掺入指定的路径;
String info  = "hello world";
//把字符串转换成字节数组
byte[] bytes = info.getBytes();
for (int i = 0; i < bytes.length; i++) {
out.write(bytes[i]);
}
//关闭流
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 字节流的输出方式二:每次输出指定大小的字节
*/
public static void write2(){
try {
OutputStream out = new FileOutputStream("E:\\1.txt", true);//true 为追加输出
String info = "one car come,one car go,two car pengpeng,one car die!";
byte[] bytes = info.getBytes();
//输出字节数组
out.write(bytes);//把所有的内容写入文件
//out.write(bytes, 0, 5);//输出一个字节数组中的指定范围的字节;
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}

字节输入流InputStream(读文件)

package com.itheima.filedemo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

/**

* 字节输入流(读文件)

* @author Administrator

*

*/

public class InputStreamDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
//read1();
//read2();
read3();
}

/**
* 字节流的读取方式一:每次读取一个字节
*/
public static void read1(){

try {
//构造一个字节输入流对象
InputStream in = new FileInputStream("E:\\1.txt");
int b = -1;//初始值定义为-1
//其中的read方法为一个字节一个字节的读,返回的是0-255之间的数字,没有数据表示返回-1;
while ((b = in.read()) != -1) {
System.out.print((char)b);//把读取的数组转化为字符
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 字节流的读取方式二:一次性读取所有的字节
*/
public static void read2(){

try {
//构造一个文件对象
File f = new File("E:\\1.txt");
//构造一个字节输入流对象
InputStream in = new FileInputStream(f);
//根据文件的大小构造一个字节数组和文件的大小一模一样,构造一个和文件大小一样的车(bytes)
byte[] bytes = new byte[(int) f.length()];
//读取文件(装车)
int len = in.read(bytes);
//把字节转换成字符输出
System.out.println(new String(bytes));
//输出文件的大小
System.out.println("文件的大小为:" + len);
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 字节输出流的读取方式三:每次读取指定大小的字节
*/
public static void read3(){

try {
//创造一个文件对象
File f = new File("E:\\1.txt");
//构造一个文件输入流对象
InputStream in = new FileInputStream(f);
//指定每次要读取的大小(车的大小)
byte[] bytes = new byte[10];
//每次读取的实际长度
int len = -1;
//构造一个sb可以追加的容器
StringBuilder sb = new StringBuilder();
while ((len = in.read(bytes)) != -1) {
//把车中的实际内容(可能不满一车)转换成字符串追加到容器中
sb.append(new String(bytes, 0, len));
}
//关闭流
in.close();
//输出sb中的内容
System.out.print(sb);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字节流