java 字节输入输出流

/*
字节流:
InputStream
OutputStream

*/
import java.io.*;
class  FileStream
{
	public static void main(String[] args) throws IOException
	{
		outputFile();
		//inputFile_1();
		inputFile_2();
	}

	/*不利用数组进行缓冲的方法*/
	public static void outputFile() throws IOException //写
	{
		FileOutputStream fos=new FileOutputStream("D:\\myfile\\mycode\\4.txt");

		fos.write("abndks你好".getBytes());

		fos.close();
	}

	public static void inputFile() throws IOException//读
	{
		FileInputStream fis=new FileInputStream("D:\\myfile\\mycode\\4.txt");

		int ch=0;
		while((ch=fis.read())!=-1)
		{
			System.out.println((char)ch);
		}

		fis.close();
	}

	/*利用数组进行缓冲的方法进行读*/

	public static void inputFile_1() throws IOException//读
	{
		FileInputStream fis=new FileInputStream("D:\\myfile\\mycode\\4.txt");

		int num=0;
		byte[] b=new byte[1024];
		while((num=fis.read(b))!=-1)
		{
			System.out.println(new String(b,0,num));
		}

		fis.close();
	}

	/*使用字节流对象中特有的available获取字节个数。*/
	public static void inputFile_2() throws IOException//读
	{
		FileInputStream fis=new FileInputStream("D:\\myfile\\mycode\\4.txt");

		int num=fis.available();

		byte[] b=new byte[num];

		int x=fis.read(b);
		System.out.println("x:"+x);
		System.out.println("num:"+num);
		System.out.println(new String(b));

		fis.close();
	}
}

复制图片:

/*
拷贝图片:
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件,用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
4,关闭资源。

*/
import java.io.*;
class CopyPic
{
	public static void main(String[] args)
	{
		FileInputStream fis=null;
		FileOutputStream fos=null;
		try
		{
			System.out.println("1111");
			fis=new FileInputStream("D:\\20.jpg");
			System.out.println("2222");
			fos=new FileOutputStream("C:\\test\\new.jpg");
			System.out.println("3333");

			byte[] b=new byte[1024];
			int len=0;
			while((len=fis.read(b))!=-1)
			{
				fos.write(b,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文件,使用字节流缓冲区

/*
通过复制MP3媒体文件来使用缓冲区

*/
import java.io.*;

class CopyMp3
{
	public static void main(String[] args)
	{
		long start=System.currentTimeMillis();
		copy_1();
		long end=System.currentTimeMillis();
		System.out.println((end-start)+"毫秒");

	}

	public static void copy_1()
	{
		FileInputStream fis=null;
		FileOutputStream fos=null;

		BufferedInputStream bis=null;
		BufferedOutputStream bos=null;

		try
		{
			fis=new FileInputStream("D:\\CloudMusic\\Lonely.mp3");

			fos=new FileOutputStream("D:\\myfile\\mycode\\new.mp3");

			bis=new BufferedInputStream(fis);
			bos=new BufferedOutputStream(fos);

			int by=0;
			while((by=bis.read())!=-1)
			{
				bos.write(by);
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("复制失败");
		}
		finally
		{
			try
			{
				if(bis!=null)
					bis.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("读取流关闭失败");
			}

			try
			{
				if(bos!=null)
					bos.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("写入流关闭失败");
			}
		}
	}
}
时间: 2024-11-09 12:28:12

java 字节输入输出流的相关文章

Java IO详解(三)------字节输入输出流

File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocean/p/6854098.html 那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream)  1.字节输出流:OutputStream public abstrac

《三》Java IO 字节输入输出流

那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream)    1.字节输出流:OutputStream ? 1 2 3 public abstract class OutputStream extends Object implements Closeable, Flushable 这个抽象类是表示字节输出流的所有类的超类. 输出流接收输出字节并将其发送到某个

java的输入输出流(一)

java中i/o流是java中核心的一部分,以前学过,但是理解不够深入,渐渐的也就忘了,现在在从新学习下java的io处理,写下我学习的笔记,便于记忆,和总结归纳: 本文原创,转载请注明:http://blog.csdn.net/j903829182/article/details/38407723 1.java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度进行分类: 按数据流的方向不同可以分为输入流和输出流. 按处理数据的单位不同可以分为字节流和字符流. 按照功

java.IO输入输出流:过滤流:buffer流和data流

java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? 不带缓冲的操作,每读一个字节就要写入一个字节. 由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低. 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里. 等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 这就是两者的区别

浅谈Java的输入输出流(转)

Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍. 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流.这时候你

JAVA基础-输入输出流

一,File类:文件的创建和删除 1.File(String pathname):pathname是指路径名称.用法 File file = new File("d:/1.txt "); 2.File(String parent, String child):parent是父路径字符串,child是子路径字符串.用法:File file = new File(" D:/", " letter.txt"); 3.File(File f, Strin

Java IO输入/输出流的套接

缓冲字符流BufferedInputStream / BufferedOutputStream 文件操作流 InputStream / OutputStream java 输入输出流的套接,测试一下流链的速度 因为节点流在程序中并不是很常用,一般常通过过滤流将多个流套接在一起,利用各流的特性共同处理数据,套接的多个流构成了一个流链: 我们来分析他们的运行时间.(因为在不同的系统(maxOX,Linux,WIN(32/64))上运行的时间可能都不相同)我截取了几段时间来进行对比. 1.缓冲字符流B

【java】缓冲字符字节输入输出流:java.io.BufferedReader、java.io.BufferedWriter、java.io.BufferedInputStream、java.io.BufferedOutputStream

BufferedReader最重要,因为有个方法public String readLine() 1 package System输入输出; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 public class Test { 8 public static void main(String[] args) throws IOExce

java基础-输入输出流-大文本文件读取及写入另一文本-----(此程序print部分有bug,输出不正常,原因琢磨不清了。。。)

简介:如题 import java.io.FileInputStream; import java.io.FileOutputStream; /** * @author czchina * */ public class TestStream { public static void main(String[] args) { FileInputStream fls = null; FileOutputStream fos =null; try{ fls = new FileInputStrea