Word2Vec中new LineSentenceIterator()默认File类型,multipartfile咋整?

看到的好多资料是,在加载语料库的时候是直接给定某个路径下的文件,比如:

SentenceIterator iter = new LineSentenceIterator(new File("/Users/cvn/Desktop/file.txt"));

但是,我现在需要在springboot下用multipartfile来传入,不想把路径直接写死,想让用户随便选择分好词的文件,部分代码如下:

public train(MultipartFile source_file, MultipartFile des_file,Integer m1,Integer m2,Integer m3,Integer m4,Integer m5) throws IOException {
        
        SentenceIterator iter = new LineSentenceIterator(new File(source_file.getOriginalFilename()));

getOriginalFilename()---该方法有个提示是:This may contain path information depending on the browser used,but it typically will not with any other than Opera.

所以,在测试的时候IE浏览器显示了盘符,运行正常,但是谷歌浏览器加载文件只是显示了文件名,就一直报错:"Please specify an existing file"

看了下源代码,这是没有找到还是没转换成file的意思??
public LineSentenceIterator(File f) {
        if (!f.exists() || !f.isFile())
            throw new IllegalArgumentException("Please specify an existing file");
        try {
            this.f = f;
            this.file = new BufferedInputStream(new FileInputStream(f));
            iter = IOUtils.lineIterator(this.file, "UTF-8");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

现在不知道要怎么改,才能解决谷歌浏览器不报错,请大家帮帮忙!!( T﹏T )

阅读 2.8k
1 个回答

后面看到有人解答的简书链接,之前有看到过,本觉得用不上,后来再看一遍,到提示了我,可以换个能够接受String类型的方法,刚好有个Collection类,虽然可以保留Multipartfile,但是目标文件不方便处理,所以最后还是全部换成了File类型,然后前端改为input type="text",由用户直接输入文件路径。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏