File类 -《学堂在线》

 


File类的作用

·创建、删除文件;

·重命名文件;判断文件的读写权限及是否存在;

·设置和查询文件的最近修改时间等;

·构造文件流可以使用File类的对象作为参数。

 

复制代码
//: FileTester.java

package com.xuetang.four;

import java.io.File;

/**
 * @author WuRoc
 * @GitHub www.github.com/WuRoc
 * @version 1.0
 * @2020年8月30日
 * import static com.wuroc.util.Print.*;
 * 
 */
public class FileTester {
    public static void main(String[] args) {
        File f = new File("Hello.txt");
        if (f.exists()) 
            f.delete();
        else
            try {
                f.createNewFile();
            }
        catch(Exception e) {
            System.out.println(e.getMessage());
        }
        
    }

}
复制代码

 

运行结果

因为在前面的例子中已经创建了Hello.txt,所以第一次运行将删除这个文件第二次运行则又创建了一个此名的空文件

分析

在试图打开文件之前,可以使用File类的isFile方法来确定File对象是否代表一个文件而非目录)还可通过exists方法判断同名文件或路径是否存在,进而采取正确的方法,以免造成误操作

复制文件改进

复制代码
//: NewCopyBytes.java

package com.xuetang.four;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author WuRoc
 * @GitHub www.github.com/WuRoc
 * @version 1.0
 * @2020年8月30日
 * import static com.wuroc.util.Print.*;
 * 
 */
public class NewCopyBytes {
    public static void main(String[] args) {
        DataInputStream instr;
        DataOutputStream outstr;
        if (args.length != 2) {
            System.out.println("Please Enter file name");
            return;
        }
        File inFile = new File(args[0]);
        File outFile = new File(args[1]);
        if (outFile.exists()) {   //复制的文件是否存在
            System.out.println(args[1] + " already exists");
            return;
        }
        
        if(!inFile.exists()) {  //复制源文件是否存在
            System.out.println(args[0] + "does.not.exist");
        
        return;
        }
        
        try {
            instr = new DataInputStream(new BufferedInputStream(new FileInputStream(inFile)));
            outstr = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)));
            
        
        try {
            int data;
            while(true ) {
                data = instr.readUnsignedByte();  //每次读一个字节
                outstr.writeByte(data);     
            }
        }
        
            catch(EOFException eof) {
                outstr.close();
                instr.close();
                return;
        
        }
        }
        catch(FileNotFoundException nfx) {
            System.out.println("Problem opening files");
        }
        
        catch(IOException iox) {
            System.out.println("IO Problem");
        }
    }

}
复制代码

 

posted @   小树木  阅读(189)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示