大家好,欢迎来到IT知识分享网。
Flie :
需要把数据持久的保存起来,最终都要以文件的形式存储在持久设备上。如果持久设备上文件太多如何管理?就会使用文件夹来管理文件或者文件夹。
在学习IO技术之前,需要了解Java是如何针对文件和文件夹这类事物做封装的。
在Java中使用File 这个类来描述持久设备上的文件或者文件夹。
文件:是用来保存真实的数据的。
文件夹:管理文件和文件夹。
File类常用的构造方法有2个,构造方法可以把对应的文件或者文件夹来封装成一个File对象。File没有空参数的构造方法。
常用的构造方法:
1、File(String pathname)
把一个字符串描述的文件或者文件夹封装成File对象。 File类的构造方法会把指定的内容封装成File对象,
2、File(String parent, String child)
可以把一个文件或者文件夹的父目录单独分离出来,然后在结合当前的子目录一起封装成File对象
file常用方法:
字节流:
File类是描述文件和文件夹的,并且其中定义的方法都是围绕文件和文件夹的操作展开的。
但是File类有缺陷,它无法去获取一个文件中的数据。
如果我们在程序中要读取文件中存放的具体的数据,或者给文件中写数据,这时必须使用Java中提供的另外一套机制来读取,
这套机制就是IO流技术。I: InputStream ; O:OutputStream
流的分类:
使用流的目的是把程序中的数据写持久设备上,或者从持久设备上读取数据,在写或者读之前,先要让这个流和持久设备之间建立一个读或者写的通道,只有有了这个通道之后才能在这个通道中开始读写数据。
FileInputStream
FileOutputStream
AbcInputStream
AbcOutputStream
1:InputStream:
fileInputStream是inputStream常用子类。
fileInputStream流被称为文件字节输入流,意思指对文件数据以字节的形式进行读取操作如读取图片视频等.
常用的构造方法有:FileInputStream(File file);FileInputStream( String path )
常用的方法有:
int read( ): 这个方法被调用一次,它运行一次,会从底层读取一个字节数据,当把这个字节读取完成之后,在文件中的隐式光标自动的移动到第一个字节和第二个字节之间。返回的数据是这个字节数据转成int值,当读取到文件的末位时,会返回-1.因此在使用read方法读取数据的时候,通过判断读取的数据是否是-1来判断是否把文件中的数据已经全部读取完成。
int read(byte[] b):这个方法每执行一次,就会从底层读取多个字节数据,把读取到的字节数据存储在byte数组中。返回的int值,是表示当前到底从底层读取了几个字节数据。 即就是给byte数组中存储了几个字节数据。如果读取到文件末位会返回-1。
int read(byte[] b,int off,int len):off从哪里开始,读多少
void close( ):关闭流,在使用完成之后一定要关闭流
小练习:
取出Java文件中得单个字符:
先创建一个Java文件
通过File file=new File(“文件地址”);获取文件
创建流对象和文件进行关联
设置一个变量,用来记录从底层文件中读取到的那个字节数据
int i=0;
定义循环开始从文件中读取数据,read不等于-1表示没读完
while((i = in.read())!=-1){
//输出:
System.out.println(i);
}
关闭流对象
in.close();
代码为:
public static void main(String[] args) throws Exception {
File file=new File(“D:\\abc\\abc.java”);//file文件
InputStream in =new FileInputStream(file);
int i=0;
while((i = in.read())!=-1){
System.out.println(i);
}
}
取出Java文件中的多个字符:
public static void main(String[] args) throws Exception {
File file=new File(“D:\\abc\\abc.java”);
//定义流对象与文件关联
FileInputStream q=new FileInputStream(file);
//定义数组,用来存储从底层读取的多个字节数据,一般都是1024的整数倍
byte[]by=new byte[1024];
while(q.read(by)!=-1){
//用foreach遍历数组存到b中 接收到空值也就是0的时候停止循环
for (byte b : by) {
if(b==0)break;
//输出
System.out.println((char)b);
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/168664.html