Spanish problemas con file.exist

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
buen día señores tengo este fragmento de código
B4X:
If File.Exists(File.DirDefaultExternal,"pc.txt")=False AND File.Exists(File.DirInternal,"pc.txt")=False Then
en el caso de que el archivo no exista todo perfecto
pero triste mente la parte falsa no funciona osea que si existe en alguna de los dos lugares el archivo. nunca se cumple.
el archivo si existe es visible con el manager de archivos

he probado varias maneras incluso solo prove
B4X:
If File.Exists(File.DirDefaultExternal,"pc.txt") then
msgbox("existe","")
end if
no funciona hay un detalle que no se si influya mi celular esta rooteado y uso el programa linktosd por lo q mi aplicacion siempre se guarda en la sd y solo un pedazo en la misma data del cel no se si esto moleste el path o algo
 

Descartex

Well-Known Member
Licensed User
Longtime User
Has revisado que tengas permiso a esos directorios??? igual al estar rooteado...
De todas formas, me suena raro, raro, raro...
 

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
si tome en cuenta eso y los permisos pues es a la sd como me fijo si tengo permiso de lectura aunque en una función use
B4X:
If File.ExternalReadable = True Then
        If File.ExternalWritable = True Then
y ambas condiciones se cumplen normalmente. también puedo leer lineas del archivo con el file.openinput la verdad se me están acabando las ideas :(
 
Last edited:

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Datasoft:

IfFile.Exists(File.DirDefaultExternal,"pc.txt")=False AND File.Exists(File.DirInternal,"pc.txt")=False Then



triste mente la parte falsa no funciona osea que si existe en alguna de los dos lugares el archivo. nunca se cumple. el archivo si existe es visible con el manager de archivos

Antes de nada comentarte el primer codigo que has puesto, no se si lo copiaste mal, por que si esta bien, no hara lo que esperas por que has puesto con una condicion AND , y si quieres que te diga cuando no exista en cualquiera de los dos directorios tienes que poner un OR. Ahora con el AND tiene que cumplirse que no este el archivo en ninguno de los dos sitios.

Si quieres saber si existe en alguno de los dos directorios emplea una lógica positiva y asi se entendera mejor el codigo:

B4X:
If File.Exists(File.DirDefaultExternal,"pc.txt") OR File.Exists(File.DirInternal,"pc.txt") Then 

' o si lo quieres aun mas claro pero es lo mismo:
If File.Exists(File.DirDefaultExternal,"pc.txt") = True OR File.Exists(File.DirInternal,"pc.txt") = True Then

Por otro lado, prueba de añadir esto en el manifest:

android.permission.READ_EXTERNAL_STORAGE

Y si quieres escribir esto:

android.permission.WRITE_EXTERNAL_STORAGE

Saludos:

Jesús
 

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
Ahora con el AND tiene que cumplirse que no este el archivo en ninguno de los dos sitios.
pues si era lo que quería decir pero no me molesta en lo mas mínimo cambiarlo a positivo igual tratare con lo del manifiesto aunque supuestamente si puedo leer y escribir en el archivo ya tengo esos permisos pero no pierdo absolutamente NADA XD gracias

edito:
agregar al manifiesto los permisos no me sirvio ponerlos en positivo tampoco alguien tiene un ejemplo q funcione usando la logica de exist q me pueda monstrar porq no veo cual es mi problema
jose
 
Last edited:

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola José:

Creo haber encontrado el problema.

Creo que tu estas mirando el directorio de la SD externa donde tienes tu fichero, pero lo intentas ver con:
File.DirDefaultExternal, que este es el directorio de la tarjeta SD pero interna.

El directorio de la tarjeta SD externa está en:
/mnt//extSdCard


Prueba esto en el activity create o donde quieras y mira que te devuelve

B4X:
  Log("File.ExternalWritable = " & File.ExternalWritable)
  Log("File.DirDefaultExternal = " & File.DirDefaultExternal)
  Log("File.DirRootExternal = " & File.DirRootExternal)
  Log("File.DirInternal = " & File.DirInternal)

Saludos
 

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
:) pues mas o menos acertaste ;) el punto era que había montado una configuración un tanto extraña en la sd y de hay q mi raíz de la sd cambiara un tanto YA RESUELTO AL FIN gracias bgsoft:D
me entretuve en otras cosas y no había usado los log:cool:

jose
 
Top