2015-09-21 7 views
0

Я хочу знать, почему мой код не пишет в текстовый файл, JVM не выбрасывает никаких исключений ...Почему мой код не записывается в текстовый файл?

public class AlterData { 

    Data[] information; 
    File informationFile = new File("/Users/RamanSB/Documents/JavaFiles/Information.txt"); 
    FileWriter fw; 

    public void populateData(){ 
     information = new Data[3]; 

     information[0] = new Data("Big Chuckzino", "Custom House", 18); 
     information[1] = new Data("Rodger Penrose", "14 Winston Lane", 19); 
     information[2] = new Data("Jermaine Cole", "32 Forest Hill Drive", 30); 
    } 

    public void writeToFile(Data[] rawData){ 
     try{  
     fw = new FileWriter(informationFile); 
     BufferedWriter bw = new BufferedWriter(fw); 
     for(Data people : rawData){ 
      bw.write(people.getName()+ ", "); 
      bw.write(people.getAddress() + ", "); 
      bw.write(people.getAge() +", |"); 
      } 
     }catch(IOException ex){ 
      ex.printStackTrace(); 
     } 
    } 

    public static void main(String[] args){ 
      AlterData a1 = new AlterData(); 
      a1.populateData(); 
      a1.writeToFile(a1.information); 
    } 
} 
+2

где является 'bw.close()' , – Satya

+1

Также ознакомьтесь с [Заявление о попытках с ресурсами] (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) – MadProgrammer

ответ

2

Попробуйте позвонить bw.flush() после записи данных, после чего вы должны закрыть поток с помощью bw.close() после промывки.

При закрытии BufferedWriter было бы лучше положить оператор close в блок finally, чтобы гарантировать, что поток закрыт, несмотря ни на что.

Вы также должны изучить возможность использования ресурса. Это делает использование AutoCloseable особенности BufferedWriter следующим образом:

try (BufferedWriter writer = new BufferedWriter(new FileWriter(new File("path/to/file")))) { 
    // Do something with writer  
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Таким образом Java убедитесь, что поток не будет закрыт для вас при выходе из тела попробовать, независимо от того, что происходит.

2

Вы должны позвонить close или flush для экземпляра BufferedWriter, чтобы промывать данных в файл. Во всяком случае, всегда важно закрыть любой ресурс, который вы используете.

0

Вы должны убедиться, что нам нужно на одном уровне(), чтобы подтолкнуть изменения в файл, обеспечить также, что вы закрываете ресурсы Файл:

public void writeToFile(Data[] rawData){ 
     BufferedWriter bw = null; 
     try{  
     fw = new FileWriter(informationFile); 
     bw = new BufferedWriter(fw); 
     for(Data people : rawData){ 
      bw.write(people.getName()+ ", "); 
      bw.write(people.getAddress() + ", "); 
      bw.write(people.getAge() +", |"); 
      } 
     }catch(IOException ex){ 
      ex.printStackTrace(); 
     } finally { 
       if(fw != null) { 
        fw.close(); 
        fw = null; 
       } 
       if(bw != null) { 
        bw.close(); 
        bw = null; 
       } 
     } 
    } 
Смежные вопросы