java初识IO流及File类详解
初识IO流
输入流inputreader,数据从数据源到程序。输出流outputwriter,数据从程序到目的地。输入输出是相对程序而言
字节流stream结尾,以字节为单位获取数据。字符流readerwriter结尾,以字符为单位获取数据,字符char为2字节unicode
节点流,直接从数据源或目的地读写数据的流。处理流包装流,不直接连接数据源目的地,对流进行处理包装的流
publicclassfirstIO{
使用FileInputStream和FileOutputStream进行文件读写操作
类结尾Stream代表字节流,input代表输入流,output代表输出流,file代表操作对象为文件,即以字节为单位对文件进行访问的流,直接连接文件数据源所以是节点流
publicstaticvoidmain(String〔〕args){
StringpathfirstIO。class。getClassLoader()。getResource()。getPath()testIO。txt;
System。out。println(path);
路径为C:Users86158IdeaProjectsprojectDIVAoutproductioniostreamtestIO。txt
。getResource()得到的是编译后的class文件所在位置的路径,在out目录下而非当前正在编写的java文件所在路径
try(FileOutputStreamfosnewFileOutputStream(path)){
trywithresource包裹io操作
fos。write(97);
传入int类型,转化为字节存储,当通过文本的方式读取时才会转换显示为字符
fos。write(100);
fos。write(103);
Stream字节流是以字节为单位,存取的字符只能为0255即对应ASCII码
fos。write(355);
当超过byte范围会溢出,35525699对应字符c
作为文本文件打开时内容为adgc
}catch(Exceptione){
catch处理异常
e。printStackTrace();
}
try(FileInputStreamfisnewFileInputStream(path)){
for(intifis。read();i!1;ifis。read()){
FileInputStream类的。read()为向后读取一个字节8位二进制数,读到字节时会返回十进制数值,返回值类型为int,作为文本读取需要(char)手动转换为字符,当文件读完、向后读不到字节时返回1
System。out。print((char)i);
文件中的换行符也会被读取到,所以不需要println换行
结果为adgc
}
}catch(Exceptione){
e。printStackTrace();
}
FilefnewFile(iostreamtestFile。txt);
File文件类将文件目录转换为对象的包装类,对文件目录包装之后可以调用File类内的方法
创建File对象需要指定绝对路径或相对路径newFile()默认生成当前项目目录下的路径
System。out。println(f。getName());
。getName()只返回文件名,不包含路径结果为testFile。txt
System。out。println(f。getPath());
。getPath()返回创建File对象时传入的路径,如果创建时传入的是绝对路径则返回绝对路径,如果传入的是相对路径则返回相对路径结果为iostreamestFile。txt
System。out。println(f。getAbsolutePath());
。getAbsolutePath()返回绝对路径结果为C:Users86158IdeaProjectsprojectDIVAiostreamestFile。txt
System。out。println(f。exists());
查询文件目录f是否存在,结果为false
try{
System。out。println(f。createNewFile());
。createNewFile()创建新文件(非目录),如果路径中某级不存在或者已存在同名文件或目录(含后缀的目录)则创建失败返回false,创建成功返回true
}catch(IOExceptione){
thrownewRuntimeException(e);
}
System。out。println(f。delete());
删除文件f,如果不存在则返回false,这里删除只会删除testFile。txt文件,目录树C:Users86158IdeaProjectsprojectDIVAiostream不会删除,因为目录iostream是File(C:Users86158IdeaProjectsprojectDIVAiostream)而不是C:Users86158IdeaProjectsprojectDIVAiostreamestFile。txt
System。out。println(f。isFile());
查询f是否为文件,当没有同名文件或者f为目录时返回false
System。out。println(f。length());
返回文件的字节数,即文件大小,结果为0,f为空文件
System。out。println(f。isHidden());
判断文件f是否为隐藏文件,hidden隐藏的,结果为false
System。out。println(f。isDirectory());
查询f是否为目录,不存在或f为文件时返回false,结果为false
System。out。println(f。mkdir());
创建目录f,当路径中某级不存在或者f为文件或者目录f已存在时返回false,结果为false
System。out。println(f。mkdirs());
创建目录树f,当路径中某级不存在时创建这些中间路径,f为文件或者已存在目录f时返回false,结果为false
Filef2f。getParentFile();
。getParentFile()返回上一级目录的File对象
System。out。println(f2。getPath());
结果为iostream,因为f使用相对路径创建,所以f2也为相对路径创建
System。out。println(f。getParent());
。getParent()返回上一级的路径字符串,结果为iostream和f2。getPath()相同
String〔〕fileListf2。list();
。list()返回目录f2下的所有文件名
System。out。println(Arrays。toString(fileList));
结果为〔iostream。iml,src,testFile。txt〕,返回文件名不包含路径
File〔〕filesf2。listFiles();
。listFiles()返回目录f2下的所有文件的File对象
System。out。println(Arrays。toString(files));
结果为〔iostreamiostream。iml,iostreamsrc,iostreamestFile。txt〕,直接打印File对象时。toString返回。getPath()
}
}