黑马程序员----JAVASE之IO流操作【字节流】

原创 2013年12月01日 23:30:35

                                                  -------------- android培训java培训、期待与您交流! ---------------

1.字节流

      在处理字节流使用的基类:InputStream,OutputStream,字节流可以处理任何形式的数据。

用法和Writer和Reader的用法基本相同。

不同的是:

           ① 字符流使用的数组是字符数组。char [] buffer      

           ② 字节流使用的数组是字节数组。byte [] buffer

使用字节流在复制图片:

import java.io.*;
class  CopyPic
{
	public static void main(String[] args) 
	{
		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("写入关闭失败");
			}
		}
	}
}

转换流: 

 特点: 
    1,是字节流和字符流之间的桥梁。 
    2,该流对象中可以对读取到的字节数据进行指定编码表的编码转换。   

什么时候使用呢? 
     1,当字节和字符之间有转换动作时。 
    2,流操作的数据需要进行编码表的指定时。   
具体的对象体现: 
    1,InputStreamReader:字节到字符的桥梁。  
    2,OutputStreamWriter:字符到字节的桥梁。


操作文件的字符流对象是转换流的子类。  
     Reader   
           |--InputStreamReader   
                 |--FileReader   
    Writer   
          |--OutputStreamWriter   
                |--FileWriter

读取mp3文件:
import java.io.*;
class  CopyMp3
{
	public static void main(String[] args) throws IOException
	{
		long start = System.currentTimeMillis();
		copy_2();
		long end = System.currentTimeMillis();

		System.out.println((end-start)+"毫秒");
	}

	public static void copy_2()throws IOException
	{
		MyBufferedInputStream bufis = new MyBufferedInputStream(new FileInputStream("c:\\9.mp3"));
		BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("c:\\3.mp3"));
		
		int by = 0;

		while((by=bufis.myRead())!=-1)
		{
			bufos.write(by);
		}

		bufos.close();
		bufis.myClose();
	}

	//通过字节流的缓冲区完成复制。
	public static void copy_1()throws IOException
	{
		BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("c:\\0.mp3"));
		BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("c:\\1.mp3"));
		
		int by = 0;

		while((by=bufis.read())!=-1)
		{
			bufos.write(by);
		}

		bufos.close();
		bufis.close();

		
	}
}

3. File类
 该类的出现是对文件系统的中的文件以及文件夹进行对象的封装。   可以通过对象的思想来操作文件以及文件夹。 
      1,构造函数: File(String filename):将一个字符串路径(相对或者绝对)封装成File对象,该路径是可存在的,也可以是不存在。                  File(String parent,String child);   File(File parent,String child);  
     2,特别的字段:separator:跨平台的目录分隔符。 
             例子:File file = new File("c:"+File.separator+"abc"+File.separator+"a.txt"); 
     
    3,File类常见方法:
        1,创建。
      boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
             boolean mkdir():创建文件夹。
             boolean mkdirs():创建多级文件夹。
       2,删除。
     boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
     v
oid deleteOnExit();在程序退出时删除指定文件。
      3,判断。
    boolean exists() :文件是否存在.
    isFile():
    isDirectory();
    isHidden();
    isAbsolute();
     4,获取信息。
    getName():
    getPath():
    getParent():
    getAbsolutePath() 
    long lastModified() 
    long length() 

列出指定目录下文件或者文件夹,包含子目录中的内容。
import java.io.*;

class FileDemo3 
{
	public static void main(String[] args) 
	{
		File dir = new File("d:\\testdir");
		System.out.println(dir.delete());
	}
	public static String getLevel(int level)
	{
		StringBuilder sb = new StringBuilder();
		sb.append("|--");
		for(int x=0; x<level; x++)
		{
			sb.insert(0,"|  ");

		}
		return sb.toString();
	}
	public static void showDir(File dir,int level)
	{
		
		System.out.println(getLevel(level)+dir.getName());

		level++;
		File[] files = dir.listFiles();
		for(int x=0; x<files.length; x++)
		{
			if(files[x].isDirectory())
				showDir(files[x],level);
			else
				System.out.println(getLevel(level)+files[x]);
		}
	}


	public static int getSum(int n)
	{
		if(n==1)
			return 1;
		return n+getSum(n-1);
	}

	public static void toBin(int num)
	{
		if(num>0)
		{
			toBin(num/2);
			System.out.println(num%2);
		}
	}




	public static void method()
	{
		method();
	}
	
	

}

                                                          -------------- android培训java培训、期待与您交流! ---------------

相关文章推荐

黑马程序员----【javaSE基础】IO--字节流

------- android培训、java培训、期待与您交流! ---------- 一、 流有输入和输出,字节流是说输入和输出的都是字节形式,它们是用来处理非文本文件的,如图片,音频,视频...

黑马程序员——java基础——IO流(1)字符流与字节流基本操作

一、IO流 IO流:即InputOutput的缩写。用于处理设备上数据。 流:可以理解数据的流动,就是一个数据流。IO流最终要以对象来体现,对象都存在IO包中。 1、特点: 1)Java对数据...
  • Huberry
  • Huberry
  • 2014年09月22日 04:20
  • 430

黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)

------- android培训、java培训、期待与您交流! ---------- 一、IO流(BufferedWriter) 字符流的缓冲区: 缓冲区提高了数据的读写效率,对应的类: Bu...

黑马程序员——7.1.IO(其他对象API(System类、Runtime类、Math类、Date类)字节流与字符流、IO异常处理、缓冲区、键盘录入、转换流、异常日志、流的操作总结)

Java IO(其他对象API(System类、Runtime类、Math类、Date类)字节流与字符流、IO异常处理、缓冲区、键盘录入、转换流、异常日志、流的操作总结)...

黑马程序员——Java基础----IO(字节流、操作规律等)(2)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------                                       ...

黑马程序员--Java基础学习之IO流之字节流、字符流、读取写入文件、Copy文件、键盘输入输出、流操作的基本规律

一、IO流 字节流抽象类: InputStream 、OutputSteam 字符流抽象类:Reader、Writer 二、写入或者读取文件(未使用缓冲区) 1、写入文件: Fil...

黑马程序员——java基础IO流概述、字符流、字节流、流操作规律

------- android培训、java培训、期待与您交流! ---------- 概述 1、IO流:即InputOutput的缩写。 2、特点:         ...

黑马程序员-Java I/O流(一)-IO流概述、字符流、字节流、流操作规律

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-1. 概述 流:可以理解数据的流动,就是一个数据流。Java中与IO相关的类有很多,都集中在java.io...

黑马程序员——Java基础---IO流(字符流、字节流、转换流、流操作规律)

简述: IO(Input Output) IO流用于处理设备之间的数据传输。(比如硬盘上的文件,内存中驻留的数据)IO流是用于操作数据的,数据的最常见体现形式是:文件。 ...

黑马程序员--IO(一)--概述、字符流、字节流、流操作规律

黑马程序员--IO(一)--概述、字符流、字节流、流操作规律 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、概述 1、IO流(Input...
  • Ob_ject
  • Ob_ject
  • 2015年11月10日 14:09
  • 224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员----JAVASE之IO流操作【字节流】
举报原因:
原因补充:

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