使用 FileInputStream 从文件中读取文本
Using FileInputStream to read text from file
我的计算机上保存了一个包含内容 abcdefgh 的文本文件。我想使用 FileInputStream 在我的控制台上显示字符,同时还测量这样做所花费的时间。它看起来像这样:
public class Readtime {
public static void main(String args[]) throws Exception{
FileInputStream in=new FileInputStream("bolbol.txt");
while(in.read()!=-1){
long startTime = System.nanoTime();
int x = in.read();
long endtime = System.nanoTime();
System.out.println(endtime-startTime);
System.out.println((char)x);
}
in.close();
}
}
我在控制台上得到的信息如下:
8863
b
7464
d
6998
f
6997
h
现在剩下的字母在哪里?好像只完成了 4 次读取操作。我的想法是朝着 char 大小的方向发展,read()
一次只读取一个字节,但我什么也没有得到。
while(in.read()!=-1){
long startTime = System.nanoTime();
int x=in.read();
您正在 while 条件下读取数据并在循环中再次打印 reading
int i=0;
while((i=in.read())!=-1){
System.out.println((char)i);
}
可以查看官方文档here
改变
while(in.read()!=-1){
到
int x;
while((x=in.read())!=-1){
并删除
int x=in.read();
您正在阅读两次..并交替打印..这就是缺少字符的原因
每次in.read();称为读取文件的下一个字符。所以你必须在每次循环迭代中读取一个字符。
int i=0;
while((i=in.read())!=-1){
System.out.println((char)i);
i=in.read();
}
如果你看到你的输出,那么你会看到你已经阅读了替代字符,因为你正在循环阅读两次,一次是在 while 条件下,一次是打印。
你可以用这个它会帮助你
public class Readtime {
public static void main(String args[]) throws Exception{
FileInputStream in=new FileInputStream("bolbol.txt");
long startTime = System.nanoTime();
byte b[]=new byte[in.available()];
fis.read(b);
String readOnConsole=new String(b);
System.out.println(readOnConsole);
long endtime = System.nanoTime();
System.out.println(endtime-startTime);
in.close();
}
}
我的计算机上保存了一个包含内容 abcdefgh 的文本文件。我想使用 FileInputStream 在我的控制台上显示字符,同时还测量这样做所花费的时间。它看起来像这样:
public class Readtime {
public static void main(String args[]) throws Exception{
FileInputStream in=new FileInputStream("bolbol.txt");
while(in.read()!=-1){
long startTime = System.nanoTime();
int x = in.read();
long endtime = System.nanoTime();
System.out.println(endtime-startTime);
System.out.println((char)x);
}
in.close();
}
}
我在控制台上得到的信息如下:
8863
b
7464
d
6998
f
6997
h
现在剩下的字母在哪里?好像只完成了 4 次读取操作。我的想法是朝着 char 大小的方向发展,read()
一次只读取一个字节,但我什么也没有得到。
while(in.read()!=-1){
long startTime = System.nanoTime();
int x=in.read();
您正在 while 条件下读取数据并在循环中再次打印 reading
int i=0;
while((i=in.read())!=-1){
System.out.println((char)i);
}
可以查看官方文档here
改变
while(in.read()!=-1){
到
int x;
while((x=in.read())!=-1){
并删除
int x=in.read();
您正在阅读两次..并交替打印..这就是缺少字符的原因
每次in.read();称为读取文件的下一个字符。所以你必须在每次循环迭代中读取一个字符。
int i=0;
while((i=in.read())!=-1){
System.out.println((char)i);
i=in.read();
}
如果你看到你的输出,那么你会看到你已经阅读了替代字符,因为你正在循环阅读两次,一次是在 while 条件下,一次是打印。
你可以用这个它会帮助你
public class Readtime {
public static void main(String args[]) throws Exception{
FileInputStream in=new FileInputStream("bolbol.txt");
long startTime = System.nanoTime();
byte b[]=new byte[in.available()];
fis.read(b);
String readOnConsole=new String(b);
System.out.println(readOnConsole);
long endtime = System.nanoTime();
System.out.println(endtime-startTime);
in.close();
}
}