JAVA11IO.docx
- 文档编号:28196045
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:20
- 大小:20.71KB
JAVA11IO.docx
《JAVA11IO.docx》由会员分享,可在线阅读,更多相关《JAVA11IO.docx(20页珍藏版)》请在冰豆网上搜索。
JAVA11IO
JAVA基础
File
•访问文件和目录
File类是java.io包下代表与平台无关的文件和目录
File类能新建、删除、重命名文件和目录
File类不能访问文件内容本身,访问文件内容本身需要使用输入/输出流
importjava.io.File;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassFileDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//创建一个文件对象
Filefile=newFile("D:
/GZT/test/test/text.txt");
//获取文件所在路径
System.out.println(file.getPath());
//获取文件绝对路径,从根路径开始
System.out.println(file.getAbsolutePath());
//D:
/GZT/test/test
System.out.println(file.getParentFile());
//创建文件目录
if(!
file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
//创建文件
if(!
file.exists()){
//创建文件
file.createNewFile();
}
//文件分隔符
System.out.println(File.separator);
//text.txt
System.out.println("文件名:
"+file.getName());
//D:
\GZT\test\test
System.out.println("父目录名:
"+file.getParent());
//Filefile1=newFile("D:
/GZT/test/test/text1.txt");
//从一个文件对象重名为另一个文件对象
//System.out.println("重命名:
"+file.renameTo(file1));
System.out.println("是否可写:
"+file.canWrite());
System.out.println("是否是文件:
"+file.isFile());
System.out.println("是否是目录:
"+file.isDirectory());
//单位毫秒
System.out.println("最后修改时间:
"+file.lastModified());
//毫秒转日期
Datedate=newDate();
date.setTime(file.lastModified());
//日期格式转换
SimpleDateFormatsf=newSimpleDateFormat("yyyy-MM-ddhh:
mm:
ss");
Stringstr=sf.format(date);
System.out.println(str);
//获取文件的长度,文件内容大小
System.out.println(file.length());
//我们已经知道这个文件已经存在
Filefile1=newFile("D:
/GZT/test/test/text1.txt");
System.out.println(file1.delete());
String[]strPaths=file.getParentFile().list();
if(null!
=strPaths){
for(StringstrP:
strPaths){
System.out.println(strP);
}
}
File[]fileArr=file.getParentFile().listFiles();
if(null!
=fileArr){
for(inti=0;i System.out.println(fileArr[i].getAbsolutePath()); } } } } 1.输入流和输出流(按照流的流向来分,注意选择参照对象) 输入流: 只能从中读取数据,而不能向其写入数据 输出流: 只能向其写入数据,而不能从中读取数据 2.字节流与字符流(按操作数据单元不同) 字节流与字符流用法一样,只是操作数据单元不同: 一个是字节(8位),一个是字符(16位) 字节流以InputStream与OutputStream为基类 字符流以Reader与Writer为基类 •流的概念模型 Java的IO流共有40多个类,但这40多个类都是从如下4个抽象基类派生的 1.InputStream/Reader: 所有输入流的基类,前一个是字节输入流,后一个是字符输入流 2.OutputStream/Writer: 所有输出流的基类,前一个是字节输出流,后一个是字符输出流 FileInputStream importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; publicclassFileIsDemo{ publicstaticvoidmain(String[]args){ FileIsDemofid=newFileIsDemo(); fid.readInfo(); } publicvoidreadInfo(){ //创建一个文件对象 Filefile=newFile("D: /GZT/test/test/text.txt"); InputStreamis=null; try{ is=newFileInputStream(file); //is=newFileInputStream("D: /GZT/test/test/text.txt"); //读取下一个字节,如果读到流(is)的结尾返回-1 intdata=0; //有小括号先算小括号里面的 //while((data=is.read())! =-1){ ////中文会被读成两截,产生乱码 //System.out.println((char)data); //} byte[]bs=newbyte[100]; //将读取到的内容放到bs中,从bs0位置开始存放,存放长度是100 //这里会因为文件本身内容长度不足以填满bs时,其后会议空格填充 //data读取到的文本字节数据个数 //bs内存中,在读文件内容的时候,先读一个字节数据到bs中, //bs没有满,文件也没有读完,接着读第二个放到bs中,bs没有满 //文件也没有读完,一次类推,要么bs读满,要么读到文件结束 //可以操作bs获取数据 while((data=is.read(bs,0,bs.length))! =-1){ System.out.println("======"); //中文也会被读成两截,产生乱码 System.out.println(newString(bs,0,data)); } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ //关闭流 try{ if(null! =is){ is.close(); } }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } } FileOutputStream importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.OutputStream; publicclassFileOsDemo{ publicstaticvoidmain(String[]args){ FileOsDemofod=newFileOsDemo(); fod.outputInfo(); } publicvoidoutputInfo(){ OutputStreamos=null; try{ //输出流的初始化 //默认是覆盖的写入,当后面传入的参数是true时,便是追加的写入 os=newFileOutputStream("D: /GZT/test/test/text.txt",false); Stringinfo="韩国部署萨德是不道德的韩国部署萨德是不道德的"; //os.write(97);//a byte[]bs=info.getBytes(); //一个中文3个字节 os.write(bs);//os.write(bs,0,bs.length); os.write(bs,0,6);//写入整个字节数组 //从第二个位置开始,写入长度为3 //os.write("acbdef".getBytes(),2,3); //os.flush(); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(null! =os){ try{ os.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } } } 文件复制 importjava.io.Closeable; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; publicclassFileCopyDemo{ //读文件的路径 privateStringiPath="D: /GZT/test/test/text.txt"; //写文件的路径 privateStringoPath="D: /GZT/test/test/text1.txt"; publicstaticvoidmain(String[]args){ FileCopyDemofcd=newFileCopyDemo(); fcd.copyFile(); } /** * *@parampath *@returntrue表示文件存在,false文件不存在 */ publicbooleanexistFile(Stringpath){ Filefile=newFile(path); //先判读目录存在不存在,如果不存在,则创建,否则不管 if(! file.getParentFile().exists()){ file.getParentFile().mkdirs(); } //判断文件存在不存在,如果不存在,则创建 if(! file.exists()){ try{ //如果不存在,并创建成功返回true,否则返回false returnfile.createNewFile(); }catch(IOExceptione){ returnfalse; } } returntrue; } publicbooleanfileError(){ //判断读写文件是否都存在,如果有一个不存在,则执行return结束方法 if(! existFile(iPath)){ System.out.println("读的文件不存在,请检查后在执行"); returnfalse; } if(! existFile(oPath)){ System.out.println("写的文件不存在,请检查后在执行"); returnfalse; } returntrue; } publicvoidcopyFile(){ //输入流读输出流写 InputStreamis=null; OutputStreamos=null; if(! fileError()){ return; } try{ is=newFileInputStream(iPath); os=newFileOutputStream(oPath); byte[]b=newbyte[100]; intdata=0; while((data=is.read(b))! =-1){ os.write(b,0,data); } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ //FileOutputStreamextendsOutputStreamimplementsCloseable //Closeable中有close方法, //Closeablecl=os; //cl.close(); closeStream(os); closeStream(is); } } /** *关闭流 * *@paramstream */ publicvoidcloseStream(Closeablestream){ try{ stream.close(); }catch(IOExceptione){ e.printStackTrace(); } } } BufferedInputStream importjava.io.BufferedInputStream; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.InputStream; publicclassBisDemo{ privatestaticStringpath="D: /GZT/test/test/text.txt"; publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub bufferIs(); } privatestaticvoidbufferIs(){ FileInputStreamfis=null; InputStreamis=null; try{ fis=newFileInputStream(path); is=newBufferedInputStream(fis); byte[]b=newbyte[100]; intdata=0; //关于flush方法 //刷新缓冲区缓冲区在没有满的情况下他还在内存中,我们是无法操作其中的数据 //当缓冲区满了之后,我们便可以通过变量访问到他 while((data=is.read(b))! =-1){ System.out.println(newString(b,0,data)); } }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ if(null! =is){ try{ is.close(); }catch(IOExceptione){ e.printStackTrace(); } } } } } BufferedOutputStream importjava.io.BufferedOutputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; publicclassBufOsDemo{ privatestaticStringpath="D: /GZT/test/test/text.txt"; publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub bufOs(); } privatestaticvoidbufOs(){ BufferedOutputStreambos=null; try{ bos=newBufferedOutputStream(newFileOutputStream(path,true)); Stringinfo="**韩国滚蛋了"; bos.write(info.getBytes()); //如果发现内容没有写全,那么就调用flush方法 //刷新缓冲区 bos.flush(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ if(null! =bos){ try{ bos.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } } } FileReader importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; importjava.io.Reader; /** * *InputStreamOutputStream *FileInputStreamFileOutputStream *BufferedInputStreamBufferedOutputStream * *ReaderWriter *FileReaderFileWriter *BufferedReaderBufferedWriter * */ publicclassFileReaderDemo{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub fileReader(); } privatestaticvoidfileReader(){ //IputStreamis=newFileInputStream(""); Readerreader=null; try{ reader=newFi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA11IO
![提示](https://static.bdocx.com/images/bang_tan.gif)