【发布时间】:2016-12-27 23:31:58
【问题描述】:
我在 assets 文件夹中有一个文本文件,目录是 main/src/assets/socso.txt,当我尝试读取它时会发生错误。我读了很多其他问题,其中包括一个 whr 放置到文本文件的问题,我很确定我做对了,并且大多数示例都使用了我不想要的缓冲阅读器,所以我对其进行了修改但仍然发生错误。我试图做的是使用扫描仪逐字从文本文件中读取双重数据类型,因此不应该使用缓冲阅读器。以下是我使用的一些代码:
InputStreamReader sc = new InputStreamReader(getAssets().open("socso.txt"));
Vector v = new Vector();
Iterator i = v.iterator();
String llimit;
while((llimit = sc.toString()) != null)
{
Socso s = new Socso();
s.setLowerlimit(Double.parseDouble(llimit));
s.setUpperlimit(Double.parseDouble(sc.toString()));
s.setEmployershares(Double.parseDouble(sc.toString()));
s.setEmployeeshares(Double.parseDouble(sc.toString()));
s.setType2(Double.parseDouble(sc.toString()));
v.add(s);
}
sc.close();
//when I run this, I can;t even run as error occur
另一个版本
//InputStream is = resources.getAssets().open("socso.txt"); (When I use this it appears as error too)
FileInputStream is = new FileInputStream(socso.txt); //(use this appear FileNotFoundException)
Scanner sc = new Scanner(is);
Vector v = new Vector();
Iterator i = v.iterator();
while(sc.hasNext())
{
Socso s = new Socso();
s.setLowerlimit(sc.nextDouble());
s.setUpperlimit(sc.nextDouble());
s.setEmployershares(sc.nextDouble());
s.setEmployeeshares(sc.nextDouble());
s.setType2(sc.nextDouble());
v.add(s);
}
我也从另一个问题中尝试过 AssetManager,但答案只是没有回答我的问题,因为上下文语法出现错误,我什至无法运行它。
【问题讨论】:
-
您是在使用来自片段还是来自活动的代码?
-
"我在 assets 文件夹中有一个文本文件" -- 然后在
AssetManager上使用open("socso.txt")。资产是您的开发机器上的文件,而不是设备上的文件,因此FileInputStream将不起作用。此外,llimit = sc.toString()毫无意义,因为InputStreamReader上的toString()不会从流中返回任何内容。除此之外,我建议使用比您的文本文件看起来更现代的数据文件格式(例如 JSON、XML)。 -
Eyad Mhanna,它实际上是java类内部方法的代码片段,所以我猜它不是活动。
-
CommonsWare,我能知道完整的语法吗,比如如何与扫描仪一起实例化它?
标签: java android android-studio