Я консультировался с этим сообществом уже несколько раз, но, тем не менее, кажется, я все еще не в состоянии решить свои проблемы самостоятельно.FileInputStream, FileOutputStream - проверить файл для определенного значения/строки/строки
Моя последняя проблема заключается в следующем:
У меня есть файл, созданный в частном хранения приложения (некорневого устройства). Я могу писать и читать. НО: Я не знаю, как добавить дополнительную информацию в свой файл (я думаю, что другой FOS легко добавит массив в конце первого, но я не уверен), и я понятия не имею, как я могу смотреть для конкретной, например, String.
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;
}
Это код того, что я сделал до сих пор. Я хочу добавить строку time
со значением 12:00 и прочитать их в форме разных методов. Lanecount Строка имеет значение 10101010 Я просто хочу эти значения, говоря, поиск строки lanecount:
и получите 12:00, говоря, поиск строки time:
EDIT:
Прежде всего это должно быть добавлена линия в мой файл. Это то, что он должен выглядеть следующим образом:
line1: lanecount: 10001000
line2 Время: 12:00
line3: TIMEX: 5:00
строка4: ANYWORD: fhfbjklös
line5: Stopbyte: 0x28
. . .
и теперь мне нужен метод, который может вынуть значение ключевого слова timex или другое, которое может читать lanecount. И, возможно, тот, который может получить значение Stopbyte.
Тогда мне нужен метод, который способен ИЗМЕНИТЬ значение времени Ключевого слова.
Если вы хранения символов в файле, я хотел бы предложить вам обернуть потоки в InputStreamReader и OutputStreamWriter. Вы также должны обернуть свои потоки в BufferedReader/BufferedWriter или BufferedInputStream/BufferedOutputStream, чтобы вам не нужно было делать буферизацию самостоятельно. Используйте [java.io пакет (который содержит все эти классы)] (http://developer.android.com/reference/java/io/package-summary.html) в полной мере. –
thx вам Logician я попробую, но это не решит проблему. – Ekonion
'byte input [] = новый байт [fis.available()];' Существует специальное предупреждение об этом использовании в Javadoc для 'InputStream.available() '. – EJP