从URI的路径中读取文件

9

我需要读取一个文件,该文件可以是本地文件或远程文件。
文件路径或URI将来自用户输入。
目前我只能读取本地文件,方法如下:

public String readFile(String fileName)
{

    File file=new File(fileName);
    BufferedReader bufferedReader = null;
    try {
        bufferedReader = new BufferedReader(new FileReader(file));
        StringBuilder stringBuilder = new StringBuilder();
        String line;

        while ( (line=bufferedReader.readLine())!=null ) {
            stringBuilder.append(line);
            stringBuilder.append(System.lineSeparator());
        }
        return stringBuilder.toString();
    } catch (FileNotFoundException e) {
        System.err.println("File : \""+file.getAbsolutePath()+"\" Not found");
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    finally {
        try {
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}

String fileName参数是用户输入的,它可以是本地文件路径或URI
我该如何修改这个方法以使其同时适用于Local pathURI


你可以查看这个链接 - https://dev59.com/MXM_5IYBdhLWcg3wlEPO - Mehmood Arbaz
2个回答

6

假设您有一个在String fileName中的URI,您可以轻松地通过以下方式读取url:

URI uri = new URI(filename);
File f = new File(uri);

请查看这个链接以获取更多相关信息,该链接与it技术有关。


请原谅我如果我错了,但是我没有在String类中看到任何toURI()方法。 - Saif
抱歉,我忘记了字符串到URI的转换 xDDDD - Jordi Castilla
谢谢。我从你的回答中找到了一个好的提示,但不是完全正确的。请编辑你的回答,我认为还有一些需要澄清的地方,比如在URI对象上使用url.toURI()(我猜是打错了),而且我不需要考虑URL - Saif

0

File类还有一个基于URI的构造函数,因此可以轻松地说new File(uri)..并且一切保持不变。 但是,URI是系统相关的,规范指出“具有方案等于“file”的绝对分层URI,非空路径组件和未定义的授权、查询和片段组件”。

我认为,如果您需要读取远程内容,则最好使用套接字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接