Java 使用AssetManager打开文本文件并将其分配给InputStream
基本上,我认为这可能是一个项目结构问题,因为我不确定文本文件放在哪里,我制作了一个目录资产,在其中放置了一个名为text的文件夹,在其中放置了myawesometext.txt 我得到的错误是调用的异常找不到文件 我认为这可能与权限有关,但找不到与其相关的权限,因为它不是外部存储 我的问题是,如果我有这个文件,并且我正在运行应用程序,我应该在结构中的哪个位置创建一个要读取的资产文件夹?我已经仔细检查了拼写(没有拼写错误),它只是捕获了我的异常 类别:Java 使用AssetManager打开文本文件并将其分配给InputStream,java,android,inputstream,android-assetmanager,Java,Android,Inputstream,Android Assetmanager,基本上,我认为这可能是一个项目结构问题,因为我不确定文本文件放在哪里,我制作了一个目录资产,在其中放置了一个名为text的文件夹,在其中放置了myawesometext.txt 我得到的错误是调用的异常找不到文件 我认为这可能与权限有关,但找不到与其相关的权限,因为它不是外部存储 我的问题是,如果我有这个文件,并且我正在运行应用程序,我应该在结构中的哪个位置创建一个要读取的资产文件夹?我已经仔细检查了拼写(没有拼写错误),它只是捕获了我的异常 类别: public class AssetsTes
public class AssetsTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
setContentView(textView);
AssetManager assetManager = getAssets();
InputStream inputStream = null;
try {
inputStream = assetManager.open("texts/myawesometext");
String text = loadTextFile(inputStream);
textView.setText(text);
} catch (IOException e) { textView.setText("Couldn't load file");
} finally {
if (inputStream != null)
try { inputStream.close();
} catch (IOException e) { textView.setText("Couldn't close file");
} }
}
public String loadTextFile(InputStream inputStream) throws IOException { ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); byte[] bytes = new byte[4096];
int len = 0;
while ((len = inputStream.read(bytes)) > 0) byteStream.write(bytes, 0, len);
return new String(byteStream.toByteArray(), "UTF8"); }
}
先谢谢你。。。
Ben您的资产文件夹位置不正确,代码也不正确。请按照以下步骤操作 首先,将当前的
assets
文件夹移动到src/main
第二,将代码中的这一行从
inputStream = assetManager.open("texts/myawesometext");
到
天才非常感谢汤米你是最棒的!!简单的错误回过头看就是看不到。我尝试了各种不同的文件目录名,但问题是它不在src main中。谢谢again@beni很高兴听到这个消息。快乐编码:)
inputStream = assetManager.open("texts/myawesometext.txt");