【发布时间】:2013-03-20 08:19:43
【问题描述】:
我已经咨询了这个社区几次,但似乎我仍然没有经验自己解决我的问题。
我最近遇到的问题如下:
我有一个文件,在应用程序的私有存储中创建(无根设备)。我可以写入它,并从中读取。但是:我不知道,我如何在我的文件中添加其他信息(我认为另一个 FOS 会很容易地在第一个末尾添加数组,但我不确定),我不知道,我怎么能看看对于特定的,例如字符串。
public static Runnable cfgsetlanecount(int l1, int l2, int l3, int l4,
int l5, int l6, int l7, int l8, Context context)
throws IOException {
System.out.println("" + l1 + l2+ l3+l4+l5+l6+l7+l8);
FileOutputStream fos = context
.openFileOutput(cfg, Context.MODE_PRIVATE);
String lanecount = "lanecount: " + (Integer.valueOf(l1).toString())
+ "" + (Integer.valueOf(l2).toString()) + ""
+ (Integer.valueOf(l3).toString()) + ""
+ (Integer.valueOf(l4).toString()) + "" + l5 + "" + l6 + ""
+ l7 + "" + l8;
byte buf[] = lanecount.getBytes();
fos.write(buf);
fos.close();
cfggetlanecount();
return null;
}
public static Runnable cfggetlanecount() throws IOException {
String collected = null;
FileInputStream fis = context.openFileInput(cfg);
byte input[] = new byte [fis.available()];
while (fis.read(input)!=-1){
collected = new String (input);
System.out.println(collected);
}fis.close();
return null;
}
这是我到目前为止所做的代码。我想添加一个值为 12:00 的 time 字符串,并从不同的方法中读取它们。 Lanecount 字符串的值是 10101010 我只想要这个值,通过搜索字符串 lanecount: 并通过搜索字符串 time: 来获取 12:00
编辑:
首先应该将此行添加到我的文件中。它应该是这样的:
line1:lanecount:10001000
line2:时间:12:00
line3: timex: 05:00
line4: 任意词:fhfbjklös
第 5 行:停止字节:0x28
。 . .
现在我想要一个方法,它能够取出关键字 timex 的值,或者另一个可以读取车道计数的方法。并且也许可以得到 Stopbyte 的价值。
然后我需要一个方法,它能够编辑关键字时间的值。
【问题讨论】:
-
如果您在文件中存储字符,我建议您将流包装在 InputStreamReader 和 OutputStreamWriter 中。您还应该将流包装在 BufferedReader/BufferedWriter 或 BufferedInputStream/BufferedOutputStream 中,这样您就不必自己进行缓冲。充分利用java.io package (which contains all these classes)。
-
感谢逻辑学家,我会尝试这样做,但这不会解决问题
-
byte input[] = new byte [fis.available()];在InputStream.available()的Javadoc 中有一个针对这种用法的特定警告。 -
我刚刚添加了
available标签,因为它在我看到的教程中完成。现在它可以工作,但将来我想要特定数量的字符(在lanecount案例8中)所以我会定义它们,但是谢谢EJP -
一段时间后文件的内容会是什么样子?
标签: java android search text-files key-value