gpt4 book ai didi

android - 从 Assets 中读取文件

转载 作者:行者123 更新时间:2023-11-29 05:38:30 24 4
gpt4 key购买 nike

public class Utils {
public static List<Message> getMessages() {
//File file = new File("file:///android_asset/helloworld.txt");
AssetManager assetManager = getAssets();
InputStream ims = assetManager.open("helloworld.txt");
}
}

我正在使用此代码尝试从 Assets 中读取文件。我尝试了两种方法来做到这一点。首先,当使用 File 时,我收到了 FileNotFoundException,当使用 AssetManager getAssets() 方法时,无法识别。这里有什么解决办法吗?

最佳答案

这是我在缓冲阅读 Activity 中所做的扩展/修改以满足您的需求

BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));

// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}

编辑:如果您的问题是关于如何在 Activity 之外进行操作,我的回答可能毫无用处。如果您的问题只是如何从 Assets 中读取文件,那么答案就在上面。

更新:

要打开指定类型的文件,只需在 InputStreamReader 调用中添加类型,如下所示。

BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt"), "UTF-8"));

// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
//process line
...
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}

编辑

正如@Stan 在评论中所说,我提供的代码不是汇总行。 mLine 每次都被替换。这就是我编写 //process line 的原因。我假设该文件包含某种数据(即联系人列表)并且每一行都应该单独处理。

如果您只想加载文件而不进行任何类型的处理,则必须在每次使用 StringBuilder() 并附加每次通过时对 mLine 进行总结。

另一个编辑

根据@Vincent 的评论,我添加了 finally block 。

另请注意,在 Java 7 及更高版本中,您可以使用 try-with-resources 来使用最新 Java 的 AutoCloseableCloseable 功能.

语境

@LunarWatcher 在评论中指出 getAssets()context 中的一个 class。因此,如果您在 activity 之外调用它,则需要引用它并将上下文实例传递给该 activity。

ContextInstance.getAssets();

这在@Maneesh 的回答中有解释。因此,如果这对您有用,请赞成他的回答,因为正是他指出了这一点。

关于android - 从 Assets 中读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com