
public class
File extends Object
implements SerializableComparable<T>
public class
FileInputStream extends InputStream(抽象类)
implements Closeable
从这个继承关系你就知道了 是不可能用FileInputStream 去 *** 作获得file的文件名和属性的 你只有实现File类 才能实现 FileInputStream 只是用来读写文件内容的
while(isread()!=-1){
b[i]=(byte) isread();
i++;
}
这里是错的,当判断isread() != -1的时候这个字节就已经被读取了,于是b[i] = (byte) isread();这里读取的就是后面一个字节,自然会乱码。解决方法如下:
byte c = (byte)isread();while(c != -1){
b[i] = c
i++;
c = (byte)isread();
}
还有一种更方便的:
byte[] b = new byte[isavailable()];isread(b);
BufferedReader构造函数所接受的参数只有Reader,而没有File。因此从类的定义的角度来说不能用BufferedReader直接读取文件。
从类的设计层面来说,BufferedReader这个类创建的初衷是用来缓冲处理其他的流,比如FileReader或者InputStreamReader,缓冲之后能够提高输入流的效率。具体应用层面来说,BufferedReader类相对于这些类多了一个readline函数,能够整行整行地读取,而不必只能用read一个一个字符读取,这样大大地提高了读取文件的效率。
以上就是关于java 如何通过 FileInputStream 获取文件名、文件属性的求助全部的内容,包括:java 如何通过 FileInputStream 获取文件名、文件属性的求助、java 用FileInputStream中read方法读取文件出现乱码、为什么使用java读取本地文件时要先使用InputStreamReader将字节流转换为字符流对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)