Autore Topic: Problema salvataggio file su memoria interna  (Letto 679 volte)

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Problema salvataggio file su memoria interna
« il: 26 Luglio 2011, 21:08:17 CEST »
0
Ciao a tutti. Ho un problema nel salvare un file nel percorso classico /data/data/com.ilmiopackage.package/nome_file.txt.

Il problema sta in una eccezione NullPointerException alla riga (penso) 43.

Il codice:

Codice (Java): [Seleziona]
salva.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View view)
                        {
                                String ncicli = "ncicli";
                                DatePicker data;
                                data = (DatePicker)findViewById(R.id.sdata);
                                boolean exist = (new File(ncicli).exists());
                                if(exist==false)
                                {
                                        FileOutputStream fos;
                        try {
                                fos = getBaseContext().openFileOutput(ncicli, Context.MODE_PRIVATE);   //RIGA DELL'ERRORE
                               
                                fos.write(1);
                                fos.close();
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                                }
                                else
                                {
                                        FileInputStream fis = null;
                                String txt = null;
                                try {
                                        fis = openFileInput(ncicli);
                                                int size = fis.available();
                                               
                                                byte[] content = new byte[size];
                                                fis.read(content);
                                                fis.close();

                                                txt = new String(content);
                                               
                                        } catch (FileNotFoundException e) {
                                               
                                        } catch (Exception e) {
                                                e.printStackTrace();
                                        }
                                }

Il logcat:

Codice: [Seleziona]
07-26 19:04:46.339: WARN/ApplicationContext(234): Unable to create files directory
07-26 19:04:46.339: WARN/System.err(234): java.lang.NullPointerException
07-26 19:04:46.348: WARN/System.err(234):     at android.app.ApplicationContext.openFileOutput(ApplicationContext.java:404)
07-26 19:04:46.348: WARN/System.err(234):     at com.ilseric.cic.seldata$1.onClick(seldata.java:43)
07-26 19:04:46.348: WARN/System.err(234):     at android.view.View.performClick(View.java:2344)
07-26 19:04:46.348: WARN/System.err(234):     at android.view.View.onTouchEvent(View.java:4133)
07-26 19:04:46.348: WARN/System.err(234):     at android.widget.TextView.onTouchEvent(TextView.java:6510)
07-26 19:04:46.348: WARN/System.err(234):     at android.view.View.dispatchTouchEvent(View.java:3672)
07-26 19:04:46.348: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
07-26 19:04:46.358: WARN/System.err(234):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
07-26 19:04:46.358: WARN/System.err(234):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
07-26 19:04:46.358: WARN/System.err(234):     at android.app.Activity.dispatchTouchEvent(Activity.java:1987)
07-26 19:04:46.358: WARN/System.err(234):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
07-26 19:04:46.358: WARN/System.err(234):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
07-26 19:04:46.358: WARN/System.err(234):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-26 19:04:46.358: WARN/System.err(234):     at android.os.Looper.loop(Looper.java:123)
07-26 19:04:46.358: WARN/System.err(234):     at android.app.ActivityThread.main(ActivityThread.java:4203)
07-26 19:04:46.358: WARN/System.err(234):     at java.lang.reflect.Method.invokeNative(Native Method)
07-26 19:04:46.369: WARN/System.err(234):     at java.lang.reflect.Method.invoke(Method.java:521)
07-26 19:04:46.369: WARN/System.err(234):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
07-26 19:04:46.369: WARN/System.err(234):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
07-26 19:04:46.369: WARN/System.err(234):     at dalvik.system.NativeStart.main(Native Method)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Problema salvataggio file su memoria interna
« Risposta #1 il: 27 Luglio 2011, 09:22:07 CEST »
0
Guardando il tuo codice:
Codice: [Seleziona]
if(exist==false)
                                {
                                        FileOutputStream fos;
                        try {
                                fos = getBaseContext().openFileOutput(ncicli, Context.MODE_PRIVATE);   //RIGA DELL'ERRORE
                               
                                fos.write(1);
                                fos.close();
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                                }

Qiesto oggetto " FileOutputStream fos" è dichiarato soltanto in se il file non esiste, ma se il file esiste dove hai dichiarato l'oggetto " FileOutputStream fos", io non l'ho vedo.
Ovviamente quando poi lo vai ad usare lo vede null.
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .