German Datei (PDF-Dokument) finden, automatisch umbenennen und in anderen Ordner speichern

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallöle,

ich habe ein Problem, an dem ich schon eine Weile experimentiere.

Ich möchte im File.DirRootExternal automatisch die Datei "PDFDokument.PDF" finden, umbenennen und in einen anderen Ordner (z.B: "OrdnerXXX") speichern.

Also der Dateiname steht fest und der neue Odnername steht auch fest, die Umbenennung soll automatisch generiert werden aus "&EditText_PDF_Bezeichnung.Text&".

Weiß jemand eine Lösung?

Mir würde es auch schon helfen, wenn mir jemand den ersten Schritt näherbringt, also das automatische finden und auslesen der Datei.

Vielen Dank im Voraus!
 

klaus

Expert
Licensed User
Longtime User
Versuche mal das hier, habe es nicht getestet:
B4X:
Sub Process_Globals
    Dim DateiName0 = "PDFDokument.PDF" As String
    Dim DateiName1 As String
    Dim PfadName0 = File.DirRootExternal As String
    Dim PfadName1 = File.DirInternal As String
End Sub

Sub Globals
    Dim EditText_PDF_Bezeichnung As EditText
End Sub

Sub DateiKopieren
    DateiName1 = EditText_PDF_Bezeichnung.Text
    If File.Exists(PfadName0, DateiName0) Then
        File.Copy(PfadName0, DateiName0, PfadName1, DateiName1)
    Else
        ToastMessageShow("Datei existiert nicht", False)
    End If
End Sub
Die Routine DateiKopieren musst Du dann von irgenwo aufrufen wenn ein Text in EditText_PDF_Bezeichnung steht.
Den Wert von DateiName1 kannst oder musst Du auch anpassen.

Beste Grüsse.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,

anfangs habe ich noch die ganze Zeit mit
'File.WriteString(File.DirRootExternal, "PDFDokument.PDF", "NeuerName")
herumexperimentiert und bin einfach nicht weitergekommen.

Nach deinem Vorschlag habe es ausprobiert und dann habe ich deinen Code etwas umgestellt und habe dabei auch meinen eigenen Hauptfehler entdeckt: In der neuen umbenannten PDF-Datei hat sich ein ":" befunden, der das Speichern unmöglich gemacht hat!

Wie auch immer - es funktioniert jetzt!

Anbei poste ich noch den Code:
B4X:
Sub PDF_Panel_001_Button_993_PDF_umbenennen_Click
Dim DateiName_1 = "PDFDokument.PDF" As String
Dim DateiName_2 As String
Dim PfadName_1 = File.DirRootExternal As String
Dim PfadName_2 = File.DirRootExternal As String
Dim EditText_PDF_Bezeichnung As EditText

'--- den neuen Ordner2 anlegen ---
File.MakeDir(File.DirRootExternal, "PDF/Dokumente/")
ToastMessageShow("Ein neuer Ordner wurde angelegt.", False)

'--- die PDF-Datei umbenennen ---
DateiName_2 = ""&PDF_Panel_001_EditText_100_PDF_Bezeichnung.Text&".PDF"
ToastMessageShow("Die PDF-Datei wurde umbenannt.", False)

'--- die PDF-Datei in den Ordner1 kopieren ---
File.Copy(PfadName_1, DateiName_1, PfadName_2, DateiName_2)
ToastMessageShow("Die PDF-Datei wurde in den Odner1 kopiert.", False)

'--- die PDF-Datei von Ordner1 In Ordner2 kopieren ---
File.Copy(File.DirRootExternal, ""&PDF_Panel_001_EditText_100_PDF_Bezeichnung.Text&".PDF", File.DirRootExternal, "PDF/Dokumente/"&PDF_Panel_001_EditText_100_PDF_Bezeichnung.Text&".PDF")
ToastMessageShow("Die PDF-Datei wurde in den neuen Ordner2 kopiert.", False)

'--- PDF-Datei in Ordner1 löschen ---
File.Delete(File.DirRootExternal, ""&PDF_Panel_001_EditText_100_PDF_Bezeichnung.Text&".PDF")
ToastMessageShow("Die PDF-Datei wurde aus dem Ordner1 gelöscht.", False)

End Sub

Super ... bin jetzt echt happy ... vielen Dank für deine Hilfe! :sign0098:
 

klaus

Expert
Licensed User
Longtime User
Das kannst Du einfacher machen:
B4X:
Sub PDF_Panel_001_Button_993_PDF_umbenennen_Click
    Dim DateiName_1 = "PDFDokument.PDF" As String
    Dim DateiName_2 As String
    Dim PfadName_1 = File.DirRootExternal As String
    Dim PfadName_2 = File.DirRootExternal As String

    '--- den neuen Ordner2 anlegen ---
    File.MakeDir(File.DirRootExternal, "PDF/Dokumente/")
    ToastMessageShow("Ein neuer Ordner wurde angelegt.", False)

    '--- die PDF-Datei umbenennen ---
    DateiName_2 = PDF_Panel_001_EditText_100_PDF_Bezeichnung.Text & ".PDF"
    ToastMessageShow("Die PDF-Datei wurde umbenannt.", False)
    
    '--- neuer PfadName ---
    PfadName_2 = File.DirRootExternal & "PDF/Dokumente"
    
    '--- die PDF-Datei in den Ordner1 kopieren ---
    File.Copy(PfadName_1, DateiName_1, PfadName_2, DateiName_2)
    ToastMessageShow("Die PDF-Datei wurde in den Odner2 kopiert.", False)

    '--- PDF-Datei in Ordner1 l�schen ---
    File.Delete(PfadName_1, DateiName_1)
    ToastMessageShow("Die PDF-Datei wurde aus dem Ordner1 gel�scht.", False)

End Sub
Falls Du die Originaldatei nicht löschen willst kannst Du den letzten Abschitt weglassen.

Beste Grüsse.
 
Top