2013-12-13 5 views
0

У меня есть приложение, которое будет создавать 3 массива: 2 с double значениями и один со строками, которые могут содержать что угодно, буквенно-цифровые, запятые, точки, все, что пользователь может набрать или ввести случайно. Массивы double просты. Строка, которую я считаю сложной. Он может содержать такие вещи, как cake red,blue 1kgpaper-clip, вы получаете идеру.Запись/чтение массива в файл

Мне нужно будет хранить эти массивы как-то (я думаю, в файле самый простой способ), прочитайте их и верните их в приложение, когда пользователь захочет.

Кроме того, было бы хорошо, если бы они не были удобочитаемыми для людей, чтобы иметь возможность читать их только через мое приложение.

Каков наилучший способ для этого? Моя проблема в том, как я могу прочитать их обратно в массивы. Его легко записать в файл, но затем вернуть их в тот же массив, в который я их помещаю ... Как я могу выделить элементы массива, чтобы он не разбивал один элемент в два, потому что он имеет space или любой другой элемент.

Может мне нравится, сделать 3 строки текста, каждый элемент разбит на вкладку \t или что-то, и когда я прочитаю его, каждый элемент будет разбит на эту вкладку? Смогут ли они создавать какие-либо проблемы при чтении? Я думаю, я хочу знать, как я могу разделить элементы массива, чтобы он не смог их некорректно прочитать.

Спасибо и хорошо провести день!

+0

Вы можете использовать специальный символ для разделителя слов – nachokk

+0

Я мог бы просто хранить данные в JSON; или, возможно, я бы использовал [H2] (http://h2database.com/html/main.html) или [SQLite] (https://bitbucket.org/xerial/sqlite-jdbc); Мне нужно будет увидеть еще несколько требований, чтобы действительно решить. –

ответ

0

Если вы не хотите, чтобы файл был доступен для чтения человеком, вы можете использовать java.io.RandomAccessFile. Возможно, вы захотите указать максимальный размер строки, если вы это сделали.

Чтобы сохранить строку:

String str = "hello"; 
RandomAccessFile file = new RandomAccessFile(new File("filename")); 
final int MAX_STRING_BYTES = 100; // max number of bytes the string could use in the file 
file.writeUTF(str); 
file.skipBytes(MAX_STRING_BYTES - str.getBytes().length); 
// then write another.. 

Чтобы прочитать строку:

// instantiate again 
final int STRING_POSITION = 100; // or whichever place you saved it 
file.seek(STRING_POSITION); 
String str = new String(file.read(MAX_STRING_BYTES)); 

Вы, вероятно, хотите, чтобы использовать начало файла для хранения размера каждого массива. Затем просто сохраните все значения по одному в файле, нет необходимости в разделителях.

Смежные вопросы