您的位置:首页 > 职场人生

黑马程序员—java基础_IO流—字节流

2015-05-08 15:15 471 查看
-------
android培训、java培训、期待与您交流! ----------

1.字节流:InputStream
OutputStream;字节流可以操作图片、音乐视频等

复制一个图片:

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

public class CopyPic {

/**
* 复制一个图片
* 1,用字节读取流对象和图片关联。
* 2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
* 3,通过循环读写,完成数据的存储。
* 4,关闭资源。
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
FileOutputStream fos = null;
FileInputStream fis = null;
try
{
fos = new FileOutputStream("c:\\2.bmp");//创建一个图片输出字节流并与文件相关联
fis = new FileInputStream("c:\\1.bmp");//创建一个图片读取字节流并与文件相关联

//创建一个数组用于存储字节流
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1)//循环读取图片字节流
{
fos.write(buf,0,len);//写入到输出流
}
}
catch (IOException e)
{
throw new RuntimeException("复制文件失败");
}
finally
{
try
{
if(fis!=null)
fis.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}

}

通过缓冲去复制MP3

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyMp3 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedInputStream bufis = null;
BufferedOutputStream bufos = null;
try
{
//创建两个缓冲区一个读一个写并与文件相关联
bufis=new BufferedInputStream(new FileInputStream("c:\\2.mp3"));
bufos=new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));

int by=0;

while((by=bufis.read())!=-1)
{
bufos.write(by);//将读取的字符写入缓冲区
}
}
catch(IOException e)
{
throw new RuntimeException("复制失败");
}

finally
{
try
{
if(bufos!=null)
bufos.close();
}
catch(IOException e)
{
throw new RuntimeException("写入关闭失败");
}
try
{
if(bufis!=null)
bufis.close();
}
catch(IOException e)
{
throw new RuntimeException("读取关闭失败");
}

}
}
}
2.读取键盘录入:

System.out:对应的标准输出设备控制台

System.in:对应的是标准输入设备键盘:InputStream in = System.in;键盘输入流

3.字符流与字节流之间的转换

InputStreamReader:是字节流通向字符流的桥梁,它使指定的读取字节并将其解码为字符。

OutputStreamWriter:是字符流通向字节流的桥梁,使将要写入流中的字符编码成字节。

InputStream in=System.in获取键盘的录入对象

InputStreamReader isr=new InputStreamReader(in)将字节流对象转换成字符流对象

BufferedReader bufr=new BufferedReader(isr);将字符串进行缓冲区技术的高效操作

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in))键盘的常见写法,以上3句的简写

OutputStream out=System.out

OutputStreamWriter osw=new OutputStreamWriter(out);

BufferedWriter bufw=new BufferedWriter(osw);

BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));

练习:键盘录入一行数据并打印其大写

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TransStreamDemo {

/**
* 键盘录入一行数据并打印其大写:读一行
* readLine方法是字符流BufferedReader的方法
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//键盘的最常见写法。
BufferedReader bufr = null;
BufferedWriter bufw = null;
try
{
<span style="white-space:pre">			</span>
bufr=new BufferedReader(new InputStreamReader(System.in));//将InputStream转换成BufferedReader,可以用readLine方法读一行
bufw=new BufferedWriter(new OutputStreamWriter(System.out));//将OutputStream转换成BufferedWriter,可以用newLine方法换行。
String line = null;
while((line=bufr.readLine())!=null)//读一行的操作
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());//转换成大写输出
bufw.newLine();//换行符
bufw.flush();
}
}
catch(IOException e)
{
throw new RuntimeException("运行失败");
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch(IOException e)
{
throw new RuntimeException("输入关闭失败");
}
try
{
if(bufw!=null)
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("输出关闭失败");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐