Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:读取选定文件并返回字符串的函数_Java_Android_Filechooser - Fatal编程技术网

Java Android:读取选定文件并返回字符串的函数

Java Android:读取选定文件并返回字符串的函数,java,android,filechooser,Java,Android,Filechooser,我为Mac/Windows制作了一个应用程序。在这些操作系统上,我可以使用JFileChooser从我的计算机中选择一个文件。但我将为我的应用程序制作一个移动版,用于Android。下面是我提到的功能代码,这是针对桌面操作系统的: public static String readFile() { JFileChooser fc; File file; fc = new JFileChooser(defaultPath); if (fc.showOpenDialo

我为Mac/Windows制作了一个应用程序。在这些操作系统上,我可以使用JFileChooser从我的计算机中选择一个文件。但我将为我的应用程序制作一个移动版,用于Android。下面是我提到的功能代码,这是针对桌面操作系统的:

public static String readFile() {
    JFileChooser fc;
    File file;
    fc = new JFileChooser(defaultPath);
    if (fc.showOpenDialog(new JFrame()) == JFileChooser.APPROVE_OPTION) {
        file = fc.getSelectedFile();
    } else {
        return null;
    }
    try {
        Scanner reader = new Scanner(file);
        content = reader.useDelimiter("\\A").next();
    } catch (IOException e) {
        System.exit(0);
    }
    return content;
}

我的问题是:如何让它在Android上工作?

如评论中所述,你不可能用一个功能完成所有的工作。 以下是允许用户选择文件的几个库之一。 还有很多其他的。 一旦你有了文件的路径,你就可以用这个片段(或者类似的东西,你可以根据自己的需要进行调整)来阅读它


由于Android上不存在
JFileChooser
,并且Android上不存在阻止UI(例如,
showOpenDialog()
),并且由于您需要将UI工作(在主应用程序线程上)与磁盘I/O(在后台线程上)分离,因此与此类似的Android功能将不会是单一的“功能”还有什么简单的方法可以在Android上读取文件而不使用文件选择器吗?这一部分与您的
try
/
catch
块中的内容没有什么不同,不过除了使用
扫描仪之外,Java中还有其他读取内容的方法,您需要在后台线程上进行I/O工作(这样在I/O进行时就不会冻结UI)。
    String mResponse;
    File file = new File(*path*, *name*);
    try {
        FileInputStream is = new FileInputStream(file);
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        mResponse = new String(buffer);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }