Oppure

Loading
01/01/14 21:42
MarcoDL4
Salve ragazzi , visto che il mio programma crea un documento e lo salva in c:\ e poi lo spedisce nel ftp con formato txt , nella prossima apertura , anche su un diverso computer , come posso fare in maniera che il file caricato txt sul ftp non venga rimosso , ma semplicemente modificato mantenendo il stesso contenuto precedente ? insomma voglio fare in modo che il programma quando carica il file txt NON RIMUOVE le vecchie stringhe , non rimuove nulla , ma semplicemente che aggiunge le stringhe mantenendo quelle vecchie , spero che sono stato chiaro ,

il mio attuale codice , che nonostante funziona, se carica il file da un altro pc me lo sostituisce in maniera completa , quindi perdo le stringhe del vecchio txt .. come risolvo ?

 RichTextBox1.SaveFile("C:\DATABASEGAME.dat", RichTextBoxStreamType.PlainText)

        Dim clsRequest As System.Net.FtpWebRequest = _
DirectCast(System.Net.WebRequest.Create("ftp://www.sito.altervista.org/datidownloadgames.txt"), System.Net.FtpWebRequest)
        clsRequest.Credentials = New System.Net.NetworkCredential("username", "psw")
        clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
        Dim clsStream As System.IO.Stream = _
        clsRequest.GetRequestStream()
        clsStream.Write(System.IO.File.ReadAllBytes("C:\DATABASEGAME.txt"), 0, System.IO.File.ReadAllBytes("C:\DATABASEGAME.txt").Length)
Ultima modifica effettuata da MarcoDL4 01/01/14 22:44
aaa
01/01/14 21:59
GN
Potresti scaricarlo, modificarlo salvandolo in modalità append e poi ri-upparlo.
aaa
01/01/14 22:42
MarcoDL4
Purtroppo non sono molto esperto , sono impazzito per creare questo codice , poi grazie youtube ci sono riuscito , sicuramente è una piccola modifica , non è che mi potresti scrivere come si fa ?
ti ringrazio mille
aaa
02/01/14 13:00
GN
Prima del codice cha hai scritto, fai il download del file dal server ftp (c'è pieno di esempi in rete, google.it/…) e lo salvi in C:\DATABASEGAME.dat; poi, invece di salvare con il metodo della richtextbox, utilizza
My.Computer.FileSystem.WriteAllText("C:\DATABASEGAME.dat", RichTextBox1.Text, True)

(come puoi vedere qui msdn.microsoft.com/it-it/library/…(v=vs.110).aspx, l'ultimo parametro serve proprio a specificare di accodare il testo al contenuto del file invece che sovrascriverlo).
aaa
02/01/14 14:41
MarcoDL4
perfetto , credo che funzioni ...
ma mi dice che il file DATABASEGAME.dat è utilizzato da un altro processo (sicuramente , mentre il file lo scarica non fa in tempo a modificarlo che ancora sta scaricando il file)
come risolvo ?
codice per il download che ho aggiunto
        download.DownloadFileAsync(New Uri("https://www.sito.altervista.org/DATABASEGAME.dat"), "C:\DATABASEGAME.dat")

'inzio codice che aggiunge testo della richtextbox1
        My.Computer.FileSystem.WriteAllText("C:\DATABASEGAME.dat", RichTextBox1.Text, True)


        Dim clsRequest As System.Net.FtpWebRequest = _
    DirectCast(System.Net.WebRequest.Create("ftp://www.sito.altervista.org/DATABASEGAMES.txt"), System.Net.FtpWebRequest)
        clsRequest.Credentials = New System.Net.NetworkCredential("sito", "psw")
        clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
        Dim clsStream As System.IO.Stream = _
        clsRequest.GetRequestStream()
        clsStream.Write(System.IO.File.ReadAllBytes("C:\DATABASEGAME.dat"), 0, System.IO.File.ReadAllBytes("C:\DATABASEGAME.dat").Length)



ERRORE ;

System.IO.IOException: Il processo non può accedere al file 'C:\DATABASEGAME.dat' perché è in uso da un altro processo.
Ultima modifica effettuata da MarcoDL4 02/01/14 17:08
aaa
02/01/14 18:14
GN
Esatto, l'errore si verifica perchè tenta di scrivere mentre sta ancora scaricando: questo perchè hai usato DownloadFileAsync, che è asincrono, cioè non bloccante, poichè (credo) esegue l'operazione su un thread separato. Hai due opzioni: la più semplice è utilizzare DownloadFile (non Async), in modo che il programma aspetterà la fine del download prima di proseguire (tieni presente, però, che durante il download l'interfaccia rimarrà bloccata; usa questo metodo solo se il file non è tanto grande); in alternativa, lascia quello asincrono, ma dichiara il WebClient come variabile globale WithEvents e sposta il codice che salva il file e fa l'upload nel gestore dell'evento di download completato (non mi ricordo come si chiama ma lo trovi nella documemtaziine su MSDN)
aaa
03/01/14 19:57
MarcoDL4
ho semplicemente risolto con
WebRequestMethods.Ftp.AppendFile
aaa
04/01/14 11:22
GN
Postato originariamente da MarcoDL4:

ho semplicemente risolto con
WebRequestMethods.Ftp.AppendFile

Ah asd ti stavo complicando inutilmente la vita scusami :asd:
Non sapevo che si potesse scrivere in modalità append direttamemte nei file su un server ftp
aaa