Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pisanje podataka u fajl ?

[es] :: Java :: Pisanje podataka u fajl ?

[ Pregleda: 1221 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Pisanje podataka u fajl ?23.02.2014. u 13:36 - pre 104 meseci
Pozdrav, evo koda i prosto pitanje, Kako da resim problem sa pisanjem? Ako neko ima vremena da odgovori, mozda je neka i banalnost ili glupost jer u predhodnim zadatcima par puta sam ispisivao podatke u fajl ali ovde nesto ne valja....

Code:
package Stanje;

import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Arrays;;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Scanner;

public class TestStanje {
    public int stanje;

    public static void main(String[] args){
        Scanner sc=new Scanner (System.in);
        System.out.println("Koje je vase trenutno stanje: ");
        int stanje=sc.nextInt();
        
        final Charset KODIRANJE=StandardCharsets.UTF_8;
        String izlaznifajl="D:\\eclipse workspace\\Stanje\\izlaz.txt";
        Path putanja=Paths.get(izlaznifajl);
        List<Prihod> prihodi=new ArrayList<>();
        
    System.out.println("Zelite li da unesete prihode ili rashode?");
            if(sc.next().equalsIgnoreCase("prihod")){            
            System.out.println("Koja je vrsta prihoda?");
            String vrstaprihoda=sc.next();
            System.out.println("Koliki je prihod?");
            int suma=sc.nextInt();
            Prihod prih=new Prihod(suma, vrstaprihoda);
            prihodi.add(prih);
            System.out.println(prihodi.toString());
            
        try{
            Files.write(putanja, prihodi, StandardCharsets.UTF_8, 
                     StandardOpenOption.APPEND);
            
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
    
}


Ovo je samo deo zadatka , postoji klasa Prihodi ali u njoj bi trebalo da je sve u redu, ovde sam kreirao novi objekat klase Prihod - prih i listu prihodi .

Kada pozovem metodu iz klase Prihod - prihodi.toString() podaci se ispisu kako treba i znaci da su uneseni u listu ali kod Files.write javlja gresku The method write(Path, Iterable<? extends CharSequence>, Charset, OpenOption...) in the type Files is not applicable for the arguments (Path, List<Prihod>, Charset, StandardOpenOption) , verovatno drugi argument nije ispravan , pokusao sam na vise nacina ali nece , ima li neko neki predlog..... ???
 
Odgovor na temu

Andrej013

Član broj: 157053
Poruke: 321
*.nyc.res.rr.com.



+694 Profil

icon Re: Pisanje podataka u fajl ?23.02.2014. u 17:27 - pre 104 meseci
Kompajler ocekuje kolekciju stringova a ti mu dajes kolekciju prihoda.
ako zoves prihodi.toString(), metoda ne vraca kolekciju stringova vec jedan string.

Ako si zadovoljan svojom toString metodom, mozda bi mogao ovako nesto:
Code:

List<String> mojiPrihodi=new ArrayList<String>();
mojiPrihodi.add(prih.toString());
            
try{
    Files.write(putanja, mojiPrihodi, StandardCharsets.UTF_8,StandardOpenOption.APPEND);
...

Mada sumnjam da ce ti ovo koristiti ako planiras da radis jos nesto sa prihodima i verovatno ne zelis da cuvas prihode u obliku Stringova.


Mogao bi da napravis utility metodu npr prihodiToListOfStrings koja uzima listu prihoda kao argument a vraca listu stringova na osnovu te liste prihoda.
Code:

List<String> prihodiStrings= new ArrayList<String>();
for (Prihod p: prihodi) {
    prihodiStrings.add(p.toString());
}
return prihodiStrings;



zatim tu metodu zoves:
Code:

Files.write(putanja, prihodiToListOfStrings(prihodi), StandardCharsets.UTF_8,StandardOpenOption.APPEND);
 
Odgovor na temu

casperns2
Full Stack Java Web Developer
Novi Sad

Član broj: 288154
Poruke: 227
*.dynamic.sbb.rs.



+45 Profil

icon Re: Pisanje podataka u fajl ?23.02.2014. u 18:43 - pre 104 meseci
Hvala Andrej, probacu i sa tvojim predlozima i koristice za kasnije da ne bi koristio druge metode,znao sam gde sam gresio ali nisam znao kako da resim, resenje je tvoj prvi predlog da napravim listu Stringova pa u nju da ubacujem preko prih.toString();

Do tad ja sam resio problem na drugi nacin, probao sam pisanje podataka preko BufferedWriter i iz prve je radilo....

Code:
public class TestStanje {
    public int stanje;

    public static void main(String[] args){
        final Charset kodiranje=StandardCharsets.UTF_8;
        String izlaznifajl="izlaz.txt";
        Path putanja=Paths.get(izlaznifajl);
        
        Scanner sc=new Scanner (System.in);
        System.out.println("Koje je vase trenutno stanje: ");
        int stanje=sc.nextInt();
        
        List<Prihod> prihodi=new ArrayList<>();
        
    System.out.println("Zelite li da unesete prihode ili rashode?");
            if(sc.next().equalsIgnoreCase("prihod")){            
            System.out.println("Koja je vrsta prihoda?");
            String vrstaprihoda=sc.next();
            System.out.println("Koliki je prihod?");
            int suma=sc.nextInt();
            Prihod prih=new Prihod(suma, vrstaprihoda);
            prihodi.add(prih);
            prihodi.add(prih);
            System.out.println(prih.toString());
            
    }
            try(BufferedWriter out = Files.newBufferedWriter(putanja,kodiranje)){
                for(Prihod lines : prihodi){
                    out.write(prihodi.toString());
                    out.newLine();
                }
            }catch(Exception e){
                e.printStackTrace();
            }    
    }
}


 
Odgovor na temu

[es] :: Java :: Pisanje podataka u fajl ?

[ Pregleda: 1221 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.