Italian Creare un file in una cartella

Fulvio75

Well-Known Member
Licensed User
Ciao, ho bisogno una info... premendo un bottone devo visualizzare una finestra che mi faccia specificare il percorso e il nome del file che utilizzerò per scriverci dentro delle info.
Come si fa? ci sono 1000 esempi uno semplice?
Grazie
 

sirjo66

Well-Known Member
Licensed User
Longtime User
per il nome del file nessun problema, ma per quel che riguarda il percorso non credo proprio che l'utente possa scegliere, visti i nuovi livelli di sicurezza d Android 6 in poi, puoi solo scrivere solo su certe cartelle
 

Fulvio75

Well-Known Member
Licensed User

Non dovrebbe creare il file se non esiste? mi dice che il file non esiste e non lo crea

Sub Write_Log(Text As String)

Dim rp As RuntimePermissions
Dim Writer As TextWriter

rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

If Result = True Then

'se acconsento al permesso scrivo il percorso di default del file di Log altrimenti disabilito il Log
'inizializzo la scrittura del file
Writer.Initialize(File.OpenOutput(AppSettings.FileLogPath,AppSettings.FileName,True))
Writer.WriteLine(Text)
Writer.Close

End If

End Sub
 

LucaMs

Expert
Licensed User
Longtime User
AppSettings.FileLogPath
A cosa corrisponde? Come lo hai impostato?

E comunque dovresti usare:

SaveAs- this code, the opposite of ContentChooser or the simpler version of ExternalStorage. Allows the user to choose the place where the file will be saved. Simple to work with and doesn't require permissions. Possible alternative to the external storage permission, which is mostly no longer available.
 

Fulvio75

Well-Known Member
Licensed User
A cosa corrisponde? Come lo hai impostato?
B4X:
Sub Initialize_FileLog
    
    Dim rp As RuntimePermissions
    
    Initializing = True

    rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
    Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

    'se acconsento al permesso scrivo il percorso di default del file di Log altrimenti disabilito il Log
    If Result = True Then

        '***ESISTE PERCORSO DEL FILE E FILE
        If AppSettings.FileLogPath <> "" And AppSettings.FileLogName <> "" Then
            
            FileLogPath = AppSettings.FileLogPath
            FileLogName = AppSettings.FileLogName
            
            fldLogPath.Text = File.Combine(FileLogPath.SubString(FileLogPath.IndexOf("Download")),FileLogName)
            txtFileName.Text = FileLogName.Replace(".txt","")
            txtFileName.Enabled = True
 

Fulvio75

Well-Known Member
Licensed User
Ho aggiunto un testo al mio post precedente.

vorrei solo impostare il percorso del file che è in Download e la cartella xxx in download l'ha creata con file.makedir, ora mi manca il file che non lo crea mi dice che non esiste, avevo usato lo stesso codice in passato e funzionava
 

Fulvio75

Well-Known Member
Licensed User
Risolto basta andare nel manifest e aggiungere:

SetApplicationAttribute(android:requestLegacyExternalStorage, true)
AddManifestText(<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />)

poi:

rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

If Result = True Then
'Creo la dir vuota per il file di log
File.MakeDir(File.Combine(File.DirRootExternal,"Download"),"test")
Dim Writer As TextWriter

'AppSettings.FileLogPath = (File.DirRootExternal,"Download"),"test")
'AppSettings.FileLogName = nome file
Writer.Initialize(File.OpenOutput(AppSettings.FileLogPath, AppSettings.FileLogName, True))
Writer.WriteLine(Text)
Writer.Close
end if
 
Top