java编程思想 IO5 文件操作源码

package com.dirlist;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedInputFile {

	//缓冲输入文件
	public static String read(String filename) throws IOException{
		//BufferedReader从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 
		BufferedReader in=new BufferedReader(new FileReader(filename));
		String s;
		StringBuilder sb=new StringBuilder();
		while((s=in.readLine())!=null){
			sb.append(s+"\n");
		}
		in.close();
		return sb.toString();
	}
	public static void main(String[] args) throws IOException {
		System.out.println(read("src/com/dirlist/BufferedInputFile.java"));

	}

}

package com.dirlist;

import java.io.IOException;
import java.io.StringReader;

public class MemoryInput {

	/**
	 * 从内存输入
	 */
	public static void main(String[] args) throws IOException {
		//StringReader其源为一个字符串的字符流
		StringReader in=new StringReader(BufferedInputFile.read("src/com/dirlist/BufferedInputFile.java"));
		int c;
		while((c=in.read())!=-1){
			System.out.print((char)c);
		}

	}

}


package com.dirlist;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;

public class FormattedMemoryInput {

	/**
	 *格式化的内存输入
	 */
	public static void main(String[] args) {
		try {
			//DataInputStream数据输入流允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。
			//ByteArrayInputStream 包含一个内部缓冲区,该缓冲区存储从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。
			DataInputStream in=new DataInputStream(new ByteArrayInputStream(BufferedInputFile.read("src/com/dirlist/FormattedMemoryInput.java").getBytes()));
			while(true){
				System.out.print((char)in.readByte());
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}

}


package com.dirlist;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;

public class TestEOF {

	/**
	 *格式化的内存输入
	 */
	public static void main(String[] args) {
		try {
			//DataInputStream数据输入流允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。
			//ByteArrayInputStream 包含一个内部缓冲区,该缓冲区存储从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。
			DataInputStream in=new DataInputStream(new ByteArrayInputStream(BufferedInputFile.read("src/com/dirlist/FormattedMemoryInput.java").getBytes()));
			//available()返回可不发生阻塞地从此输入流读取的字节数。返回值是 count - pos,它是要从输入缓冲区中读取的剩余字节数。 
			while(in.available()!=0){
				System.out.print((char)in.readByte());
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}

}

package com.dirlist;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringReader;

public class BasicFileOutput {

	static String filename="BasicFileOutput.out";
	public static void main(String[] args) throws IOException {
		BufferedReader in=new BufferedReader(new StringReader(BufferedInputFile.read("src/com/dirlist/FormattedMemoryInput.java")));
		//BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 
		//PrintWriter向文本输出流打印对象的格式化表示形式
		PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter(filename)));
		int lineCount=1;
		String s;
		while((s=in.readLine())!=null){
			pw.println(lineCount+++":    "+s);
		}
		pw.close();
		System.out.println(BufferedInputFile.read(filename));
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值