File 类的字节流操作

1:从文件中读取字节:InputStream ,因为其是抽象类,所以常用其子类:FileInputStream(字节输入流), 来处理。常用的操作:

File f = new File("d:"+ File.separator + "文件名";

InputStream input = null;

input = new FileInputStream(f);

byte b[] = new byte[1024];

input.read(b); //把内容取出,读到byte数组中。

input.close;

System.out.println("内容为:"+new String(b));//把byte数组变为字符串输出。

 

2:如果是键盘输入,则用字符输入流:bufferedReader 和InputStreamReader 就可以了。实现方法:

BufferedReader br = new BufferedReader (new InputStreamReader(System.in)

 

String str = br.readLine(); //区别于read();

System.out.println(Str);

 

3: 取相对路径是:ClassName.class.getResourceAsStream

看下面一段代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import cn.idchecker.test.TimeUtil;

/**
 * 地址码读取类
 * @author rongxinhua
 *
 */
public class DicReader {
 
 /**
  * 读取地址码
  * @param addrNum
  * @return 若存在,则返回该地址码对应的地址名称,若不存在,返回null
  */
 public static String readAddress(String addrNum) {
  char first = addrNum.charAt(0);
  if(first == '1' || first == '2' || first == '3' || first == '4' || first == '5' || first == '6'){
   String filePath = first + ".dic";
   String addr =  readAddress(filePath, "UTF-8", addrNum);
   return addr;
  }
  return null;
 }
 
 /**
  * 读取地址码是否存在
  * @param filePath 文件路径
  * @param charset 文件编码
  * @param addrNum 地址码,6位数字
  * @return 存在返回地址名称,否则返回null
  */
 public static String readAddress(String filePath, String charset, String addrNum){
  String addr = null;
  try {
   InputStream is = DicReader.class.getResourceAsStream(filePath);
   BufferedReader buffReader = new BufferedReader(new InputStreamReader(is,charset));

   String line;
   while((line = buffReader.readLine()) != null){
    if(addrNum.equals(line.substring(0,6))) {
     addr = line.substring(7, line.length());
     break;
    }
   }
   buffReader.close();
   
  } catch (FileNotFoundException e) {
   System.err.println("找到不地址码文件");
   e.printStackTrace();
  } catch (IOException e) {
   System.err.println("读取地址码文件失败");
   e.printStackTrace();
  }
  return addr;
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenghuiping2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值