一楼的你不会就不要瞎说,read()方法的作用:"下一个数据字节;如果已到达文件末尾,则返回 -1。"所以这个循环是绝对出的来的,死就死在"for(int i=0;i<buffer.length-1;i++)"这个里面.我感觉也不是死了,只不过循环太多,2个for就至少做了512*511次,然后还要while...吐...话说你这个代码从功能上看,只能得到字母的个数.根本不需要循环,直接用在FileInputStream in=new FileInputStream("English.txt"); 下面写个System.out.println(in.available()); 就可以了in.available()方法是io里面带的系统方法,返回int型,表示可以读取的字节数量.然后英文单词的一个char,正好是一个byte的长度,所以,直接用(已经测试通过)给你个完整的例子,IO可是要学好的啊:另外,需要try/catch就用,别搞个throws
import java.io.*;public classpinlv {
publicpinlv (){
}
public static void main(String[] args) {
FileInputStream in = null;
try {
in = new FileInputStream("English.txt");
System.out.println(in.available());
} catch (Exception ex) {
ex.printStackTrace();
}
}}附带送个完整的输入输出流例子给你import java.io.*;public class TestInputStream {
public static void main(String[] args) {
try {
// 写入文件
FileOutputStream out = new FileOutputStream("English.txt");
String s = "abcd";
out.write(s.getBytes());
out.close();
// 读取普通英文文件
FileInputStream in = new FileInputStream("English.txt");
int length = in.available();
for (int i = 0; i < length; i++) {
int temp = in.read();
System.out.print((char)temp);
} |