[ Dejan tf @ 20.04.2015. 21:51 ] @
Potrebna mi je pomoc :

Zelim da kreiram txt file na sdcard u koji cu upisivati neke podatke,
Dobijam sledecu poruku o gresci:

04-20 20:24:14.857: E/Nije kreiran file(1119): /sdcard/Rezultati aplikacije/MojaAPP.txt: open failed: ENOENT (No such file or directory)

Evo koda:

Code:

      public void onClick(View v) {
             /*String value = et1.getText().toString();
             */
        
                 try {
                       PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("/sdcard"+File.separator+"Rezultati aplikacije"+File.separator + "MojaAPP.txt", true)));
                       out.println(et1.getText().toString());
                       
                       out.close();
                       Log.e("Super", "radi");
                   } catch (IOException e) {
                       Log.e("Nije kreiran file",e.getMessage());
                   }


Nzm. zbog cega mi nece da kreira txt file..U jednoj drugoj aplikaciji kviz koju sam radio sve je radilo super, upisivao sam igraca , datum i rezultat. Medjutim sada nesto ne funkcionise nzm. gde gresim.

Molim vas za pomoc.

[ dusans @ 20.04.2015. 22:01 ] @
Lepo ti kaže greška.
1. Proveri da li postoji taj direktorijum.
2. Ako direktorijum postoji, onda možda neće da radi pošto pokušavaš append fajla koji ne postoji.
[ Dejan tf @ 21.04.2015. 08:37 ] @
Dusane hvala na odgovoru, ti si jedan od retkih koji se na ovom forumu oglasavaju sto se tice androida.

Proverio sam sada u DDMS->pa file explorer->storage->sdcard

nije mi kreirao ni folder Rezultati aplikaicje..


Pa sam sada pokusavao da taj txt file postavim u assest folder. I tu da upisujem neke podatke..

Medjutim ponovo greska..

04-21 07:33:45.289: E/Nije ok(932): provera.txt: open failed: EROFS (Read-only file system)


U ovom slucaju mi nadje taj txt file, ali nece nista u njega da upise javi se izuzetak..

evo koda..

Ovaj kod treba da radi sledece:
1)Ako se u txt file nalazi samo vrednost 0 koju sam rucno upisao, korisnik mora upisati probnu sifru, pre

pravoog logovanja npr. u ovom slucaju je (DPL). U trenutku kada upise probnu sifru ide na dugme uloguj se u txt file

se upisuje vrednost 1.


2) Korisnik nece vise nikada imati potrebu na pocetku da vrsi probno logovanje (npr. DPL), vec ce tada vuci podatke iz baze za svoje logovanje sa svojim usernemom i passwordom..

Code:

Scanner scan = null;
                try {
                    scan = new Scanner(new BufferedInputStream(getAssets().open("provera.txt")));
                    Log.e("postoji fie","da");
                    
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    Log.e("Nema klase",e.getMessage());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                int x = 0;
            while(scan.hasNextInt()){
                 x = scan.nextInt();
                
                
            }
            if(x==0){
                
                Log.e("Ispred upisa imena i pass","da");
                try {

                    if((edtKorisnicko.getText()).equals("DPL") && edtPassword.getText()).equals("DPL") ){
                        
                    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("provera.txt", true)));//PrintWriter nasledjuje klasu Writer 
                        
                    Log.e("Uporedjeni","kada");
                    
                  
                    out.append("\n");
                    
                    out.append("1");
                    Log.e("1","da SE ZNAM");
                
                    out.close();
                    Log.e("Upisani podaci","hdh");

                    }else
                        
                    edtKorisnicko.setText("Nisu vam dobri podaci");
                
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    Log.e("Nije ok",e.getMessage());
                }        
            }else if(x==1){
                System.out.println("Jupi");
                
            }
                
                
        }
        });

    }




[ dusans @ 21.04.2015. 08:53 ] @
Ja sam radio nešto malo u Androidu ali pre dve godine,
tako da i ovaj kod pišem napamet i ne proveravam.
Bolje se vrati na prvu varijantu i probaj ovako:

Code:

public void onClick(View v) {
try {
    // Ako ne radi kreiranje direktorijuma, probaj da Environment.getExternalStorageDirectory() zameniš sa "/sdcard" ili sličnim path-om
    // Prepare directory
    string fileDir = Environment.getExternalStorageDirectory()+File.separator+"Rezultati aplikacije";
    File dir = new File(fileDir);
    dir.mkdirs();

    // Write file content
    string filePath = fileDir+File.separator + "MojaAPP.txt";
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(filePath, true)));
    out.println(et1.getText().toString());
    out.close();
    Log.e("Super", "radi");
} catch (IOException e) {
    Log.e("Nije kreiran file",e.getMessage());
}


A ovo stavi u AndroidManifest.xml ako već nije tamo:
Code:

<uses-permission> android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission> android:name="android.permission.READ_EXTERNAL_STORAGE" />


A preporučujem ti da pročitaš dokumentaciju koja se tiče čuvanja podataka/podešavanja:
http://developer.android.com/t...torage/shared-preferences.html
http://developer.android.com/t...basics/data-storage/files.html

Ja koliko vidim, za ono što tebi treba, je SharedPreferences dušu dao.
SharedPreferences je baš i pravljen za scenarije slične tvom,
bukvalno 5 linija koda za čitanje i upis tvoje "0" ili "1".
[ Dejan tf @ 21.04.2015. 09:01 ] @
Ok, sada cu da pokusam. Sto se tice AndroidManifesta.xml tu sam vec stavio :

Code:

<uses-permission> android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission> android:name="android.permission.READ_EXTERNAL_STORAGE" />


Hvala jos jednom.
[ Dejan tf @ 21.04.2015. 09:14 ] @
Ovo radi, upisuje podatak iz edit polja.

Sada cu pokusati sa txt fil-om pa cu i to izbaciti ovde..



[ Dejan tf @ 24.04.2015. 07:12 ] @
Kod koji funkcionise :

Na pocetku kada se kreira apliakcija kreira se txt file :

Code:


    try{
            file= getBaseContext().getFileStreamPath(filename);
               Log.e("Postoji file", "da");
            }catch(Exception e){
                Log.e("ne postoji file", e.getMessage());
            }
        try {
            outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
            try {
                //outputStream.write(broj.getBytes());
                outputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            
        }
           
        }



Prvo u mom slucaju citamo vrednost iz txt file, ako u file ne postoji ni jedna vrednost, tada za aktiviranje aplikacije moramo

upisati neku vrednost, ako je vec aktivirana aplikacija u txt file je upisana vrednost..


Code:

 try {
                     fileis=openFileInput(filename);
                     InputStreamReader isr = new InputStreamReader ( fileis ) ;
                        BufferedReader buffreader = new BufferedReader ( isr ) ;

                        String readString = null;
                        try {
                            readString = buffreader.readLine ( );
                            //edtKorisnicko.setText(readString);
                            Log.e("Procitan podatak","da");
                        } catch (IOException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                     
                        if ( readString == null) {
                            

                            if(("DPl").equalsIgnoreCase(edtKorisnicko.getText().toString()) && ("Dpl").equalsIgnoreCase(edtPassword.getText().toString())){
                            
                            String string = "1";
                            
                            Log.e("Postoji fajl","daaa");
                            

                            
                              try {
                                outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
                            } catch (FileNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                              try {
                                  //outputStream.write("\n".getBytes());
                                outputStream.write(string.getBytes());
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                              Log.e("Postoji","da da da");
                             isr.close ( ) ;
                              try {
                                outputStream.close();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                            }
                            
                            }else {
                                
                                edtKorisnicko.setText("Predjite na pravo logovanje");
                                
                            }

            
            }catch(Exception e){
                }
            }
            });

        }





Mredjutim ovde i dalje postoji jedan problem kada zatvorimo aplikaciju i ponovo pokrenemo ponovo cemo morati da unosimo username i pass za aktiviranje aplaikacije, ako tu neko moze da mi pomogne, ovo smestam u internu memoriju, ako bih kreirao txt file na sdcard i ako telefoon nema sdcard tu bih bio problem.
[ Dejan tf @ 24.04.2015. 10:22 ] @
Dodao sam sledecu liniju koda, provera da li postoji file.
Code:
try{
            file= getBaseContext().getFileStreamPath(filename);
               Log.e("Postoji file", "da");
            }catch(Exception e){
                Log.e("ne postoji file", e.getMessage());
            }
        
             if(!file.exists()){
            try {
                outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
                Log.e("Otvoren file", "da");
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                Log.e("nije otvoren file",e1.getMessage());
            }
            try {
                //outputStream.write(broj.getBytes());
                outputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            Log.e("Upisana je 0", "da");
        
            }else{
                
                edtKorisnicko.setText("Predji na prvo logovanje");
            }
        }


Sada sve funkcionise
[ dule_ns @ 27.04.2015. 12:20 ] @
Ajde molim te samo jedno pitanje: proveri da li vidiš fajl iz file managera sa telefona i da li vidiš fajl kad telefon prikačiš na PC iz PC-jevog file managera.
[ Dejan tf @ 27.04.2015. 13:32 ] @
Ovako u eclipsi u DDMS->file explorer->nadjes apliakciju i u lokalnoj memoriji se kreira txt file. Ne vidim taj file u file menager. Aplikacija funkcionise.