2017-03-07 1 views
0

Le programme s'exécute en douceur et je peux voir les valeurs du vecteur dans l'éditeur, mais je ne vois pas les valeurs dans le fichier texteJe ne peux pas écrire les données de la table de vecteurs dans le fichier texte, mais le programme fonctionne sans problème

FileManagement FileManagement = new FileManagement(); 
      String sti = "D:\\El teknik/Data.txt"; 
     /*En Vector er en liste af andre objekter, men den kan betragtes som en tabel 
     ligesom et array. Fordelen ved en Vector er, at ikke angives en bestemt længde 
     i tabellen*/ 
      Vector dataTabel = new Vector(); 
     // konstruktør til at initialisere objektet 

Ces 3 lignes sont les valeurs que je veux dans le fichier texte

Data dataoplysning1 = new Data("Hjemmeside","brugernavn","password"); 
/*Jeg kalder min vektor personTabel og gemmer oplysninger i vector´en og vector 
Vector klassen har en metode add(objekt), der tilføjer et objekt sidst i vektoren 
*/ dataTabel.add(dataoplysning1);/*dette er et menupunkt, som opretter et objekt 
og gemmer i vector´en*/ 
    Data dataoplysning2 = new Data("Facebook.com", "Bjarne Olsen", "The1bad32feel"); 
    dataTabel.add(dataoplysning2); 
    Data dataoplysning3= new Data("Twitter", "Herman Jessen","Degode3fort3l"); 
    dataTabel.add(dataoplysning3); 

i appeler la méthode statique en bas

//jeg kalder den static-metode save(Vector v, String sti) 
    FileManagement.save(dataTabel,sti); 
//det kan være et nyt menupunkt, som gemmer vector´en på harddisken 
    Vector nyDataTabel = new Vector(); 
    nyDataTabel=FileManagement.load(nyDataTabel,sti); 
/* Henter tabellen på harddisken, som ikke bør være et menupunkt, men filen hentes 
på harddisken, når programmet starter*/ 
for (int idx=0;idx<nyDataTabel.size();idx++) 
{ 
    dataoplysning1=(Data)nyDataTabel.elementAt(idx); 
    System.out.println("Hjemmeside. :"+dataoplysning1.getHjemmeside()); 
    System.out.println("Brugernavn. :"+dataoplysning1.getusername()); 
    System.out.println("Password. :"+dataoplysning1.getpassword()); 
    System.out.println("---------------------------------------"); 
} 
//Et menupunkt som udskriver hele vector´en 
for (int idx=0;idx<nyDataTabel.size();idx++) 
{ 
    dataoplysning2 = (Data)nyDataTabel.elementAt(idx); 
    String Hjemmeside = dataoplysning2.getHjemmeside(); 
    if (Hjemmeside.compareTo("Facebook.com")==0) 
    { 
     System.out.println("Find følgende brugernavn og password"); 
     System.out.println("Hjemmeside. :"+dataoplysning2.getHjemmeside()); 
     System.out.println("Brugernavn. :"+dataoplysning2.getusername()); 
     System.out.println("Password. :"+dataoplysning2.getpassword()); 
     idx=nyDataTabel.size(); 
    }/*Det er et menupunkt, der søger efter brugeroplysninger på en bestem 
hjemmeside i vector´en*/ 
else { 
     System.out.println("Dataerne passer ikke med hinanden"); 
    } 
}  
// AES_encryption.user();//kalder metoden 
    AES_encryption.skriv(sti, x); 
    } 

La méthode ci-dessous est l'endroit où il écrit les valeurs de vecteur vers le fichier texte, qui est où le problème est

public static void skriv(String fileName, Vector dataTabel) throws IOException 
    { 
     BufferedWriter outputWriter=null; 
     outputWriter = new BufferedWriter(new FileWriter(fileName)); 
    for (int i = 0;i <dataTabel.size();i++) 
    { 
    //skriver enten 
    outputWriter.write(dataTabel.get(i) + ""); 
    // eller 

    outputWriter.write(Integer.toString((int) dataTabel.get(i)));//her gemmer den arrayet til tekststrengen 
    outputWriter.newLine();//den går videre til en ny linje 
    } 
    outputWriter.flush(); //gemmer arrayet til tekstrengen filnavn 
    outputWriter.close();//afslutter gemning af fil og metoden 
    } 

Répondre

0

Bien que sans codes entiers, je ne peux pas exécuter vos codes dans mon site, je suppose que FileManagement.save () semble appeler skriv() pour sauvegarder la table. Donc, je voudrais suggérer ce que vous pouvez essayer avec la méthode skriv(); Le premier write() dans skriv() obtient datatabel.get (i) pour l'écriture, mais le type de chaque élément de datatabel est un objet, pas une valeur, donc je suggère d'utiliser la sérialisation d'objet plutôt que BufferedReader. Ou vous pouvez séparer les champs en chaînes, ce qui entraîne trois écritures de fichier (ou une écriture d'une chaîne concaténée de trois chaînes) pour chaque i.

+0

Eh bien, j'ai trouvé la solution plus tard, c'était presque comme vous l'avez dit à cause de la sérialisation des objets, que j'ai oublié d'ajouter, puis j'ai supprimé l'autre méthode contenant BufferedReader. –

+0

Cela semble bon pour vous! – fcmonoid