tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
7019
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SMoeller
    SMoeller SMoeller ist offline Mitglied Silber
    Registriert seit
    Sep 2005
    Beiträge
    88
    Hi,
    ich möchte mit Hilfe von der Klasse RandomAccessFile ein Programm schreiben, dass Strings ein- und auslesen kann. Das stellt noch kein Problem dar. Allerdings möchte ich nun erst ein paar Einträge in die Datei schreiben, sie dann in belibieger Reihenfolge ausgeben (das funktioniert auch) und dann wieder Strings in die Datei schreiben und diese dann ausgeben. Nun funktioniert das erneute schreiben und lesen der Strings nich so, wie es funktionieren soll.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    
    import java.io.*;
    public class myr
    {
         private static RandomAccessFile raf;
         private int MAXL = 40;
         
         public myr(RandomAccessFile r)
         {
            raf = r;
         }
         
         public void schreiben(String s)
         {
            try
            {
                //long pos = raf.length();
                long pos = raf.getFilePointer();
            
                raf.writeUTF(s);
                raf.seek(pos + MAXL);
                raf.close();
            }
            catch(IOException ioe)
            {
                ioe.getMessage();
            }
        }
        
        public String lesen(int i)
        {   
            String s = null;
            try
            {
                raf.seek(i * MAXL);
                s = raf.readUTF();
                raf.close();
            }
            catch(IOException ioe)
            {
                ioe.getMessage();   
            }
            
            return s;
            
        }
        
        public static void main(String[] args)
        {
            myr test = null;
            File f = new File("Test.doc");
            
            try
            {
                f.createNewFile();
                test = new myr(new RandomAccessFile(f, "rw"));   
            }
            catch(FileNotFoundException fnfe)
            {
                fnfe.getMessage();   
            }
            catch(IOException ioe)
            {
                ioe.getMessage();   
            }
            
            test.schreiben("Guten Tag" + '\n');
            test.schreiben("Der Herr" + '\n');
            test.schreiben("Grüß Gott" + '\n');
            
            System.out.println(test.lesen(2));
            System.out.println(test.lesen(0));
            System.out.println(test.lesen(1));
            
            //test.schreiben("Hallo" + '\n');
            //System.out.println(test.lesen(3));
            
            //test.close();
            //f.delete();
        }
        
    }
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hi,
    hätte letzte Woche schon geantwortet, hatte aber leider keine Zeit mehr

    So funktioniert es:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    
    import java.io.*;
    public class myr
    {
         private static RandomAccessFile raf;
         private int MAXL = 40;
         private int count = 1;
         public myr(RandomAccessFile r)
         {
            raf = r;
         }
         
         public void schreiben(String s)
         {
            try
            {
                long pos = raf.length();
                //long pos = raf.getFilePointer();
            
                raf.writeUTF(s);
                raf.seek(count*MAXL+pos);
                count++;
                
            }
            catch(IOException ioe)
            {
                ioe.getMessage();
            }
        }
        
        public String lesen(int i)
        {   
            String s = null;
            try
            {
                raf.seek(i * MAXL);
                s = raf.readUTF();
                
            }
            catch(IOException ioe)
            {
                ioe.getMessage();   
            }
            
            return s;
            
        }
        
        public void close(){
            try {
                raf.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args)
        {
            myr test = null;
            File f = new File("Test.doc");
            
            try
            {
                f.createNewFile();
                test = new myr(new RandomAccessFile(f, "rw"));   
            }
            catch(FileNotFoundException fnfe)
            {
                fnfe.getMessage();   
            }
            catch(IOException ioe)
            {
                ioe.getMessage();   
            }
            
            test.schreiben("Guten Tag" + '\n');
            test.schreiben("Der Herr" + '\n');
            test.schreiben("Grüß Gott" + '\n');
            
            System.out.println(test.lesen(2));
            System.out.println(test.lesen(0));
            System.out.println(test.lesen(1));
            test.close();
            //test.schreiben("Hallo" + '\n');
            //System.out.println(test.lesen(3));
            
            //test.close();
            //f.delete();
        }
        
    }

    Musst die Datei aber erst löschen. Aber im moment wird die Datei jedesmal überschrieben wenn das Programm neu gestartet wird.
    Geändert von zerix (03.12.06 um 16:12 Uhr)
     

Ähnliche Themen

  1. Dll lesen und schreiben
    Von vbänfänger im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 20.08.09, 13:29
  2. lesen & schreiben
    Von celloman im Forum Java
    Antworten: 7
    Letzter Beitrag: 16.10.07, 16:32
  3. .txt lesen/schreiben
    Von shader09 im Forum C/C++
    Antworten: 18
    Letzter Beitrag: 16.10.07, 07:32
  4. txt lesen/schreiben
    Von shader09 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 11.10.07, 11:13
  5. INI Dateien mit vb.net schreiben und lesen
    Von forsterm im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 16.12.04, 17:27