2017-03-07 11 views
0

程序運行平穩,我可以在編輯器中看到向量的值,但是我看不到值中的值文本文件我無法將向量表的數據寫入文本文件,但程序運行沒有問題

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 

這3行是我想要的文本文件

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); 

我調用靜態方法向下跌破

//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); 
    } 
裏面的值

下面的方法就是將其寫入矢量值輸出到文本文件,這是問題的所在

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 
    } 

回答

0

雖然沒有完整的代碼,我不能在我的網站上運行代碼後,我想FileManagement.save( )似乎調用skriv()來保存表。所以我想建議你可以嘗試使用方法skriv(); ()中的第一個write()獲取datatabel.get(i)用於寫入,但datatabel的每個元素的類型是Object,而不是值,因此我建議使用Object序列化而不是BufferedReader。或者你可以將字段分成字符串,每個字符i產生三個文件寫入(或者一個由三個字符串串聯的字符串)。

+0

那麼我後來發現解決方案,它幾乎就像你說的因爲對象序列化,我忘了添加,然後我刪除了另一個包含BufferedReader的方法。 –

+0

這聽起來不錯! – fcmonoid

相關問題