Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: tekstitiedostoon tallentaminen

ososo [19.03.2009 09:45:17]

#

Eli pitäisi koodata sellanen ohjelma jossa eri käyttäjille (työntekijöille) avautuu oma tekstikenttä/taulukko jonne voi näppäillä raportteja/tehdyt tunnit. ja nämä raportit/tunnit pitäisi sitten tallentua tekstitiedostoksi.

Tarvitaanko tässä SQL:llää vai riittääkö pelkkä Java? Koodaustaitoni on täysin alkeelliset. Erityisesti sormi menee suuhun tuossa tekstitiedostoon tallentamisen ja sieltä tiedon noutamisen kanssa. Onko jossain saatavilla avointa javakoodia jota voisi soveltaa tähän kuitenkin suht yksinkertaiseen ohjelmaan?

Mobel [19.03.2009 11:01:19]

#

Riippuut työntekijöiden määrästä, onko tarpeellista käyttää SQL:ää. Jos työntekijöiden määrä on siinä kymmenen paikkeilla, niin eiköhän pelkillä tekstitiedostoilla pärjää.

Tähän on kohtuullisen helppo viritellä käyttöliittymä päälle, joka kysyy nimen ja tunnit tj.

Tässä luokka, joka lukee ja kirjoittaa tekstitiedostoon.
Luokan import-rivit on jätetty pois, koska en ulkoa muistanut mihin paketteihin kaikki kuuluvat. Jos kopioit koodin johonkin editoriin, se varmasti ehdottaa mitä sieltä pitää tuoda. Koodissa voi olla virheitä, kun sen suoraa tähän viestikenttään näpyttelin ja muokkailin sopivaksi(ohjelma missä tämän tyylistä ratkaisua käytin oli toisella koneella). Jos näin käydessä ilmoittele, niin korjaan koodia

public class WriteAndRead{

 /** Luokkaa kutsutaan WriteAndRead.kirjoitaTiedostoon("Tämä menee talteen", "tunnit.txt");
   * tai WriteAndRead.lueTiedostosta("tunnit.txt")
   */

 public void kirjoitaTiedostoon(String kirjoitettava, String tiedostonimi){ //kirjoittaa halutun tekstin haluttuun tiedostoon
   FileWriter kirjoitin=null;
   BufferedWriter puskuKirjoitin=null;

   try{
      kirjoitin=new FileWriter(tiedostonimi);
      puskuKirjoitin=new BufferedWriter(kirjoitin);
      puskuKirjoitin.write(kirjoitettava); //sinne meni kirjoitettava teksti
      puskuKirjoitin.newLine(); //rivinvaihto
      puskuKirjoitin.flush(); //ei taida olla pakollinen kun finally taitaa kutsua tätä myös
   }catch(IOException ioe){
      ioe.printStackTrace();
   }
   finally{
      try{
            if(puskuLukija!=null)puskuLukija.close();
      }catch(IOException ioe){
         ioe.printStackTrace();
      }
   }

 }


 public String lueTiedostosta(String tiedostonimi){ //palauttaa halutusta tiedostosta luetun tekstin String-tyypin muuttujana
   FileInputStream sisään=null;
   InputStreamReader lukija=null;
   BufferedReader puskuLukija=null;

   try{
      sisään=new FileInputStream(tiedostonimi);
      lukija=new InputStreamReader(sisään, "ISO-8859-1"); //notepadin oletuskoodaus, tähän voi laittaa myös "UTF-8" jos niin haluaa
      puskuLukija=new BufferedReader(lukija);
      String rivi=null;
      String kokoTeksti="";

      while((rivi=puskuLukija.readLine())!=null){
         kokoTeksti=kokoTeksti+rivi;
      }
   }catch(IOException ioe){
      ioe.printStackTrace();
   }
   finally{
      try{
         if(puskuLukija!=null)puskuLukija.close();
      }catch(IOException ioe){
         ioe.printStackTrace();
      }
   }

   retrun kokoTeksti;
 }

}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta