Java Android:读取选定文件并返回字符串的函数
我为Mac/Windows制作了一个应用程序。在这些操作系统上,我可以使用JFileChooser从我的计算机中选择一个文件。但我将为我的应用程序制作一个移动版,用于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
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;
}