Struktura Pracownicy pliku odczyt/zapis.

0

Witam mam do zrobienia strukturę zawierająca dane:id i imie i nazwisko zrobiłem sobie zapis do pliku lecz wygląda on w taki sposób że każde pole jest w osobnej linijce a chce żeby było np:
ID Imię Nazwisko
1 Jacek Bąk
2 Karol Karolczak

Nie mam pojęcia jak to zrobić i szukam tego od paru dni,proszę o pomoc,a także o to jak potem odczytać te dane

Klasa zapis

import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Zapis{

private static int id;
private static String imie;
private String empty;

public Zapis(int id1, String imie2)
{
id=id1;
imie=imie2;
}
public static void dodaj(Zapis s)
{
s.empty="";
System.out.print("blabla");
s.id=99;
s.imie="jacek";

FileUtil util = new FileUtil();
util.writeLinesToFile("test.txt",new int[] {s.id},new String[] { s.imie},new String[] {s.empty}, true);

}

}


Klasa FileUtil

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class FileUtil {

public void writeLinesToFile(String filename,int[] id,
String[] linesToWrite,String[] empty,
boolean appendToFile) {

PrintWriter pw = null;

try {

  if (appendToFile) {

    //If the file already exists, start writing at the end of it.
    pw = new PrintWriter(new FileWriter(filename, true));

  }
  else {

    pw = new PrintWriter(new FileWriter(filename));
    //this is equal to:
    //pw = new PrintWriter(new FileWriter(filename, false));

  }

  for (int i= 0; i < id.length; i++) {

      pw.println(id[i]);

    }

  for (int i = 0; i < linesToWrite.length; i++) {

      pw.println(linesToWrite[i]);

    }
  for (int i= 0; i < empty.length; i++) {

      pw.println(empty[i]);

    }

  pw.flush();

}
catch (IOException e) {
  e.printStackTrace();
}
finally {

  //Close the PrintWriter
  if (pw != null)
    pw.close();

}

}

public static void main(String[] args) {

}
}

Klasa Pracownicy

public class Pracownicy {

static int id;
static String imie;
public static void main(String[] args) {
Zapis t = new Zapis(id,imie);
t.dodaj(t);
}
}

0

mam nadzieje ze o to Ci chodzilo ... :)


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Pracownicy {

static int id;
static String imie;
        public static void main(String[] args) throws FileNotFoundException {
                  Zapis t = new Zapis(id,imie);
                  t.dodaj(t);
                  t.odczytaj();
        }        
        }

class Zapis{

private   static int id;
private static String imie;
private String empty;

public Zapis(int id1, String imie2)
{
        id=id1;
        imie=imie2;
}
public void odczytaj() throws FileNotFoundException {
    Scanner in = new Scanner(new File("Test.txt"));
    while(in.hasNextLine()){
        String wejscie = in.nextLine();
        System.out.println(wejscie);
    }

}
public static void dodaj(Zapis s) 
{

        s.empty="";

        System.out.print("blabla");
        s.id=99;
        s.imie="Marcin Jakis";

    FileUtil util = new FileUtil();
    util.writeLinesToFile("test.txt",new int[] {s.id},new String[] { s.imie},new String[] {s.empty}, true);

}

}

class FileUtil {

      public void writeLinesToFile(String filename,int[] id,
                                   String[] linesToWrite,String[] empty,
                                   boolean appendToFile) {

        PrintWriter pw = null;

        try {

          if (appendToFile) {

            //If the file already exists, start writing at the end of it.
            pw = new PrintWriter(new FileWriter(filename, true));

          }
          else {

            pw = new PrintWriter(new FileWriter(filename));
            //this is equal to:
            //pw = new PrintWriter(new FileWriter(filename, false));

          }

          for (int i= 0; i < id.length; i++) {

              pw.print(id[i]);

            }

          for (int i = 0; i < linesToWrite.length; i++) {

              pw.print(linesToWrite[i]);

            }
          for (int i= 0; i < empty.length; i++) {

              pw.print(empty[i]);

            }
          pw.println();
          pw.flush();

        }
        catch (IOException e) {
          e.printStackTrace();
        }
        finally {

          //Close the PrintWriter
          if (pw != null)
            pw.close();

        }

      }

      public static void main(String[] args) {

      }
    }
0
private   static int id;
private static String imie;

Nie rób czegoś takiego, może to powodować problemy w aplikacji wielowątkowej, np. gdy w drugim wątku odpalasz metodę która korzysta z tych pól podczas gdy pierwszy też ją wywołał ale jeszcze nie skończył. W zasadzie tu chyba pomoże po prostu usunięcie z obu pól static.

Co do odczytu tych danych to bardzo polecam klasę: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

0

ale to mozesz dodac spacje przed imie, albo co co bedzie automatycznie ja dodawało

String imieDwa="Marcin Jakis";
s.imie = " "+imieDwa;
0

Dzięki wam za pomoc i sorry za zawracanie głowy w niedzielę ;p
A i odczyt musi wyglądać tak żebym mógł wczytać daną linijkę z danymi czyli np. chce odczytać dane pracownika o ID=4 to wczytuję linie numer 5 bo pierwsza linijka to ta zawięrająca nazwy pól,a potem dziele tą linie na 3 zmienne jedna zawierająca imię,druga zawierająca nazwisko,i jedna zawierająca id.

0

najlepiej zrobic to z wykorzystaniem Mapy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0