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;
}
}