java - 在方法参数中指定文件类型

标签 java file parameters io

我想知道是否可以在类构造函数中要求某种类型的文件?

例如:

    private class name(File location.txt) 

我想为我要支持的每种类型的文件格式有一个不同的构造函数。我可以编写一个方法来检查文件并将其发送到适当的方法,但想知道是否可以跳过该逻辑?

最佳答案

我希望这个迷你工厂 sample 适合您:

public class Test {

    private FileReaderFactory fileReaderFactory = new FileReaderFactory();

    public static void main(String[] args) {
        String fileTxt = "test1.txt";
        String filePdf = "test2.pdf";

        Test test = new Test();
        FileTypeI filereaderTxt = test.fileReaderFactory.createFromExtension(fileTxt);
        FileTypeI filereaderPdf = test.fileReaderFactory.createFromExtension(filePdf);

        filereaderTxt.readFile();
        filereaderPdf.readFile();
    }

    public interface FileTypeI {
        void readFile();
    }

    class TextFileReader implements FileTypeI {
        @Override
        public void readFile() {
            //Code to read Text File
        }
    }

    class PDFFileReader implements FileTypeI {
        @Override
        public void readFile() {
            //Code to read PDF File
        }
    }

    class FileReaderFactory {
        public FileTypeI createFromExtension (String filename) {
            FileTypeI returningValue = null;
            if (filename != null && filename.endsWith(".txt")) {
                returningValue = new TextFileReader();
            } 
            else if (filename != null && filename.endsWith(".pdf")) {
                returningValue = new PDFFileReader();
            }
            return returningValue;
        }
    }

}

关于java - 在方法参数中指定文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479084/

相关文章:

c++ - 如何将 void* 转换为 size_t?

java - 如何在oracle存储过程中返回自己类型的数据?

java - 有没有办法在 Camel 关闭时保留飞行中的消息,并在随后的启动时重新加载?

java - 在 Java 中获取集合的各个条目?

c++ - 在 C++ 中给定路径的文件列表

python - 使用多处理和多线程时锁定文件 - Python

java - 我们可以在 apache Camel 中将 jmsxgroupid 与线程一起使用来解决线程 dsl 标记中的排序问题吗

c - Mcrypt 库将结果写入文件

c - 如何将数组作为参数传递给C中的函数?

ms-access - VBA使用基于查询的参数运行Access Report