Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Структура файла

Читайте также:
  1. Cтворення командного файла
  2. I.2. Структура оптимизационных задач
  3. PCX. Формат появился как формат хранения растровых данных программы PC PaintBrush фирмы Z-Soft и является одним из наиболее распространенных (расширение имени файла .PCX).
  4. VІІ. Методика проведення заняття і його організаційна структура
  5. VІІ. Методика проведення заняття і організаційна структура заняття
  6. VІІ. Методика проведення заняття та організаційна структура заняття
  7. А. Структура ВС России и система управления войсками.

В данной программе запись в файл реализована следующим образом:

(количество объектов)(размер следующего объекта)(сам объект)(размер следующего объекта)(сам объект)

Графическая илюстрация:

Блок схема


Код программы

import java.io.*;

 

public class stroka {

String name;

int popul;

int gubCount;

String gubNames[];

int gubPop[];

 

//ввод исходных данных

public void vvod() {

try {

StringBuffer str;

char ch;

System. out. println("Введите название страны");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= 13)

str.append(ch);

ch = (char) System. in. read();

name = new String(str.toString());

System. out. println("Введите количество жителей в данной стране");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= 13)

str.append(ch);

ch = (char) System. in. read();

popul = Integer. parseInt (str.toString());

System. out. println("Введите количество губерний в данной стране");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= 13)

str.append(ch);

ch = (char) System. in. read();

int t = Integer. parseInt (str.toString());

gubCount = t;

gubPop = new int [t];

gubNames = new String[t];

 

for (int i = 0; i < t; i++) {

System. out. println("Введите название губернии");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= 13)

str.append(ch);

ch = (char) System. in. read();

gubNames[i] = new String(str.toString());

System. out

.println("Введите количество жителей в данной губернии");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= 13)

str.append(ch);

ch = (char) System. in. read();

gubPop[i] = Integer. parseInt (str.toString());

}

} catch (IOException e) {

System. out. println(e.toString());

}

}

 

//вывод исходных данных на экран

public void vivod() {

int t = gubCount;

System. out. println(name + " " + popul + " " + t + ":");

for (int i = 0; i < t; i++)

System. out. println(" " + gubNames[i] + " " + gubPop[i]);

}

//проверка: соответствует ли количество жителей в губерниях и количество жителей в //стране

public int check() {

int s = 0;

for (int i = 0; i < gubCount; i++) {

s += gubPop[i];

}

if (s == popul)

return 1;

Else

return 0;

}

 

public String getName() {

return name;

}

 

//запись информации в файл

public void writeToFile(DataOutputStream out) {

try {

out.writeInt(this. getInFileSize());

out.writeUTF(name);

out.writeInt(popul);

out.writeInt(gubCount);

for (int i = 0; i < gubCount; i++) {

out.writeUTF(gubNames[i]);

out.writeInt(gubPop[i]);

}

} catch (IOException e) {

System. out. println(e.toString());

}

}

 

//чтение информаци из файла

public void readFromFile(RandomAccessFile inp, int startPosition){

try {

inp.seek(startPosition);

name = inp.readUTF();

name = name.trim();

popul = inp.readInt();

gubCount = inp.readInt();

gubNames = new String[gubCount];

gubPop = new int [gubCount];

for (int i=0; i<gubCount; i++){

gubNames[i] = inp.readUTF();

gubPop[i] = inp.readInt();

}

} catch (IOException e){

System. out. println(e.toString());

}

}

//функция реализует подсчет размера обхекта при записи его в файл

public int getInFileSize(){

int res;

res = name.length()+4+4+2;

for (int i=0; i<gubCount; i++)

res+= gubNames[i].length()+2+4;

return res;

}

}

 

 

import java.io.*;

 

public class z7 {

 

public static void main(String[] args) {

try {

//инициализация ппотоков для вывода

OutputStream f = null;

StringBuffer str;

char ch;

try {

f = new FileOutputStream("test.j");

} catch (FileNotFoundException e) {

System. out. println("Файл не найден");

return;

}

BufferedOutputStream b = new BufferedOutputStream(f);

DataOutputStream out = new DataOutputStream(b);

//ввод количества строк в таблице

int n;

str= new StringBuffer();

System. out. println("Введите кол-во строк в таблице");

while ((ch = (char) System. in. read())!= '\n')

if (ch!= 13)

str.append(ch);

n = Integer. parseInt (str.toString());

out.writeInt(n);

//ввод объектов с клавиатуры и зпись их в файл

for (int i = 0; i < n; i++) {

stroka s = new stroka();

s.vvod();

s.writeToFile(out);

}

out.close();

 

// InputStream f1 = new FileInputStream("test.j");

// BufferedInputStream bi = new BufferedInputStream(f1);

// DataInputStream inp = new DataInputStream(bi);

//инициализация файла проихвольного доступа

File f1 = new File("test.j");

RandomAccessFile inp = new RandomAccessFile(f1, "r");

stroka s1 = new stroka();

 

//считывание номера необходимой записи

System. out. println("\nВведите номер записи которую хотите прочитать");

str = new StringBuffer();

while ((ch = (char) System. in. read())!= '\n')

if (ch!= 13)

str.append(ch);

n = Integer. parseInt (str.toString());

int k = inp.readInt();

if (n > k) {

System. out. println("В файле нет такой записи");

return;

}

//подсчет положения необходимой записи в файле

int pos = 4, t;

for (int i = 0; i < n - 1; i++) {

t = inp.readInt();

pos += t+4;

inp.seek(pos);

}

pos+=4;

//считывание необходимой записи и вывод ее на экран

s1.readFromFile(inp, pos);

System. out. println("Считанная запись:\n");

s1.vivod();

inp.close();

} catch (IOException e) {

System. out. println(e.toString());

}

}

 

}

 


Дата добавления: 2015-10-29; просмотров: 48 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Код программы| Результаты работы программы

mybiblioteka.su - 2015-2024 год. (0.016 сек.)