Javaバイトストリームと文字ストリームのインスタンス


1.基本概念
データ型別:Javaにはバイトストリームと文字ストリームの2種類があります.
バイトフロー:InputStream/OutputStream
文字フロー:Reader/Writer
バイトストリームが読み込まれると、1バイトが読み込まれると1バイトが返されます.
文字ストリームがバイトストリームを使用して1つ以上のバイト(中国語対応のバイトは2つ、UTF-8コードテーブルは3つ)を読み取る場合は、指定したコードテーブルを先に調べ、調べた文字を返します.
2.共通サブクラス
バイトストリームはすべてInputStream/OutputStream/streamで終わり、InputStream/OutputStreamの前にこのストリームの役割を表し、それらはすべてInputStream/OutputStreamを継承しています.
例えば、FileInputStream/FileInputStreamは操作ファイルの内容のバイトストリームを表し、PrintStreamは印刷をフォーマットするためのバイトストリームを表す.
文字ストリームはすべてReader/Writerで終わり、Reader/Writerの前にこのストリームの役割を表し、Reader/Writerを継承します.
例えば、FileReader/FileWriterは、ファイルの内容を操作する文字ストリームを表し、PrintWriterは、印刷をフォーマットするための文字ストリームを表す.
2.使用する場合
バイトストリームは、ピクチャ、MP 3などのすべてのタイプのデータを処理することができる.
文字ストリームは文字データのみを処理できます.
バイト・ストリームと文字ストリームの使用例を次に示します.
FileIO.javaファイル:
package com.swsx.io;

import java.io.File;

/**
 *              
 * @author Administrator
 *
 */
public interface FileIO {

	String CLASS_PATH = System.getProperty("java.class.path") + File.separator;
	
	/**
	 *    
	 */
	String LINE_SEPARATOR = System.getProperty("line.separator");
	
	/**
	 *       
	 * @param fileName
	 * @return
	 */
	boolean createFile(String fileName);
	
	/**
	 *       
	 * @param fileName
	 * @return
	 */
	boolean deleteFile(String fileName);
	
	/**
	 *          
	 * @param fileName
	 * @param content
	 */
	void writeFile(String fileName, String content);
	
	/**
	 *          
	 * @param fileName
	 * @param content
	 * @param append      
	 */
	 void writeFile(String fileName, String content, boolean append);
	 
	 /**
	 *        
	 * @param fileName
	 * @return
	 */
	 String readFile(String fileName);
}

AbstraactFileIO.javaファイル:
package com.swsx.io;

import java.io.File;
import java.io.IOException;

/**
 *   FileIO    
 * @author Administrator
 *
 */
public abstract class AbstractFileIO implements FileIO {

	public AbstractFileIO() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public boolean createFile(String fileName) {
		// TODO Auto-generated method stub
		if(fileName != null && !fileName.equals(""))
		{
			File file = new File(CLASS_PATH + fileName);
			try {
				return file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return false;
	}
	
	@Override
	public boolean deleteFile(String fileName) {
		// TODO Auto-generated method stub
		if(fileName != null && !fileName.equals(""))
		{
			File file = new File(CLASS_PATH + fileName);
			return file.delete();
		}
		return false;
	}

	@Override
	public void writeFile(String fileName, String content) {
		// TODO Auto-generated method stub
		writeFile(fileName, content, false);
	}

	@Override
	public abstract void writeFile(String fileName, String content, boolean append);

	@Override
	public abstract String readFile(String fileName);

}

FileStreamIO.javaファイル:
package com.swsx.io;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;

/**
 *              
 * @author Administrator
 *
 */
public class FileStreamIO extends AbstractFileIO {
	
	public FileStreamIO() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void writeFile(String fileName, String content, boolean append){
		if(fileName != null && content != null && !fileName.equals(""))
		{
			byte[] b = content.getBytes();
			OutputStream output = null;
			try {
				output = new FileOutputStream(CLASS_PATH + fileName, append);
				output.write(b);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(output != null){
					try {
						output.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
	}
	//   :                       (    )
//	@Override
//	public String readFile(String fileName){
//		if(fileName != null && !fileName.equals("")){
//			File file = new File(CLASS_PATH + fileName);
//			InputStream input = null;
//			byte[] b = new byte[1024];//          
//			try {
//				input = new FileInputStream(file);
//				int temp = 0;
//				int count = 0;
//				while((temp = input.read()) != -1){
//					b[count++] = (byte)temp;//     ,     
//				}
//				return new String(b);
//			} catch (FileNotFoundException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}finally{
//				if(input != null){
//					try {
//						input.close();
//					} catch (IOException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//				}
//			}
//		}
//		return null;
//	}
	
	//   :  ByteArrayOutputStream               (        )
	@Override
	public String readFile(String fileName){
		if(fileName != null && !fileName.equals("")){
			File file = new File(CLASS_PATH + fileName);
			InputStream input = null;
			//                 ByteArrayOutputStream 
			byte[] b = new byte[16];
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			try {
				input = new FileInputStream(file);
				int len = 0;
				while((len = input.read(b)) != -1){
					out.write(b, 0, len);//ByteArrayOutputStream    
				}
				return new String(out.toByteArray());// ByteArrayOutputStream           
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(input != null){
					try {
						input.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		return null;
	}
	
	/**
	 *       
	 * @param fileName
	 * @param append
	 * @param format
	 * @param args
	 */
	public static void PrintFile(String fileName, boolean append, String format, Object...args){
		if(fileName != null && format != null && !fileName.equals("")){
			PrintStream pt = null;
			try {
				pt =new PrintStream(new FileOutputStream(CLASS_PATH + fileName, append));
				pt.printf(format, args);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(pt != null){
					pt.close();
				}
			}
		}
	}
}

FileCharacterIO.javaファイル:
package com.swsx.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 *              
 * @author Administrator
 *
 */
public class FileCharacterIO extends AbstractFileIO {

	public FileCharacterIO() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	public void writeFile(String fileName, String content, boolean append) {
		// TODO Auto-generated method stub
		if(fileName != null && content != null && !fileName.equals(""))
		{
			Writer out = null;
			try {
				out = new FileWriter(CLASS_PATH + fileName, append);
				out.write(content);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(out != null){
					try {
						out.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
	}

	//   :                       (    )
//	@Override
//	public String readFile(String fileName) {
//		// TODO Auto-generated method stub
//		if(fileName != null && !fileName.equals("")){
//			File file = new File(CLASS_PATH + fileName);
//			Reader in = null;
//			char[] c = new char[1024];//          
//			try {
//				in = new FileReader(file);
//				int temp = 0;
//				int count = 0;
//				while((temp = in.read()) != -1){
//					c[count++] = (char)temp;//     ,     
//				}
//				
//				return new String(c);
//			} catch (FileNotFoundException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}finally{
//				if(in != null){
//					try {
//						in.close();
//					} catch (IOException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//				}
//			}
//		}
//		return null;
//	}
	
	
	//   :  StringBuffer StringBuilder      (        )
	@Override
	public String readFile(String fileName) {
		// TODO Auto-generated method stub
		if(fileName != null && !fileName.equals("")){
			File file = new File(CLASS_PATH + fileName);
			Reader in = null;
			//                 StringBuffer StringBuilder 
			char[] c = new char[16];
			//StringBuffer StringBuilder      
			StringBuffer strBuffer = new StringBuffer();
			try {
				in = new FileReader(file);
				int len = 0;
				while((len = in.read(c)) != -1){
					strBuffer.append(c, 0, len);//    
				}
				return strBuffer.toString();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				if(in != null){
					try {
						in.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		return null;
	}
}

TestFileIO.javaファイル:
package com.swsx.io;

public class TestFileIO {

	public static void main(String[] agrs){
	    FileIO fileIO = new FileCharacterIO();
		String fileName = "test1.txt";
		if(fileIO.createFile(fileName)){
			System.out.println("success");
		}
		String content = "  !" + FileIO.LINE_SEPARATOR + "hello" + FileIO.LINE_SEPARATOR;
		fileIO.writeFile(fileName,content);
		FileStreamIO.PrintFile(fileName,true, "  :%s   :%d%s", "  ", 3, FileIO.LINE_SEPARATOR);
		System.out.println(fileIO.readFile(fileName));
		fileIO.deleteFile(fileName);
	}

}

//  :
//success
//  !
//hello
//  :     :3