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
[code]
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);

}

}

[/code]
Klasa FileUtil
[code]
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) {

}
}
[/code]
Klasa Pracownicy
[code]

public class Pracownicy {

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

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