Spanish File.OpenInput ENOENT (No such file or directory)

angel_

Well-Known Member
Licensed User
Longtime User
Tengo varios errores en Crashlytics relacionados con ENOENT (No such file or directory) en anywheresoftware.b4a.objects.streams.File.OpenInput, sucede con diferentes versiones de Android (7.1.1, 9 y 10), he buscado en el foro pero no acabo de solucionar el problema, en mi dispositivo no salta este error lo que complica su solución.

En el manifiesto tengo:

B4X:
AddManifestText(
<uses-permission
  android:name="android.permission.WRITE_EXTERNAL_STORAGE"
  android:maxSdkVersion="19" />
)

SetApplicationAttribute(android:requestLegacyExternalStorage, true)

Utilizo las rutas rs.GetSafeDirDefaultExternal para guardar los archivos que se crean en la aplicación y File.DirAssets para leer archivos (añadidos al File Manager del IDE).

A ver si alguien ha solucionado el problema.
 

josejad

Expert
Licensed User
Longtime User
Hola Ángel:

¿Puedes poner las partes de tu código en la que usas archivos a ver si así alguien ve algo raro que te pueda ayudar?
 

josejad

Expert
Licensed User
Longtime User
Creo recordar que Crashlytics te da también la línea java en la que obtienes el error. Puedes ver los archivos de java en tu carpeta creo recordar que es Objects/src y ver la línea, los comentarios que introduce el compilador te pueden ayudar a ver qué función o activity de tu aplicación es.
 

angel_

Well-Known Member
Licensed User
Longtime User
Creo recordar que Crashlytics te da también la línea java en la que obtienes el error. Puedes ver los archivos de java en tu carpeta creo recordar que es Objects/src y ver la línea, los comentarios que introduce el compilador te pueden ayudar a ver qué función o activity de tu aplicación es.
Gracias, el error se produce en:

Caused by java.io.FileNotFoundException
...open failed: ENOENT (No such file or directory)
B4X:
    Dim rs As RuntimePermissions  
    Dim RutaArchivo as String = rs.GetSafeDirDefaultExternal("pr")

    Dim parser As JSONParser
    parser.Initialize(File.ReadString(RutaArchivo, Nombre & ".extension"))  '<<-- Error
    Dim Map1 As Map = parser.NextObject
    Dim lista As List = Map1.Get("lista")
 

josejad

Expert
Licensed User
Longtime User
Parece entonces que en algunos dispositivos ese archivo no se crea o se copia...
Encierra las lineas de la 4 a la 7 con un

B4X:
if file.exist then
...

.Puedes poner el codigo donde copias o creas ese archivo?
 

angel_

Well-Known Member
Licensed User
Longtime User
He eliminado un Sleep(0) antes de la apertura del archivo que creo que me daba problemas, os iré informando.

Saludos
 
Top