Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > чтение и запись в файл II


Автор: Entwickler 21.4.2007, 23:28
Код


import java.io.*;
import java.util.*;

public class kodieren
{
  public static char kodieren(char c)
  {
    if (( c >= 'A') && (c <= 'Z' ))
    {
        c += 13;
        if ( c > 'Z') c -=26;
    }
    if (( c >= 'a') && ( c <= 'z' ))
    {
        c += 13;
        if ( c > 'z') c -=26;
    }
    return c;
  }

  public static void main(String[] args) throws IOException
  {
    System.out.print("Geben Sie die Name des zu kodierene Feiles: ");
    BufferedReader enter = new BufferedReader(new InputStreamReader(System.in));
    String name = enter.readLine();
    try
    {
        BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line = file_in.readLine();

        FileWriter fw = new FileWriter("kode.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        PrintWriter pw = new PrintWriter(bw);
        
        StringBuffer buf = new StringBuffer(line);
        for (int i = 0; i < buf.length(); ++i)
            buf.setCharAt(i, kodieren(buf.charAt(i)));
        
        pw.print(buf);
        pw.close();
        bw.close();
        fw.close();
        
    }
    catch (Exception e)    { System.out.println(e.toString()); }
    
  }
}

программка читает из файла, кодирует и пишет снова в файл.Проблема: читает из файла, но только первую строку. А как зделать чтобы вес файл читал? И если не сложно немного по подробней 

Автор: cube 21.4.2007, 23:56
Это твой код:
Код

        BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line = file_in.readLine();


Сделай вот так:
Код

        BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line;
        while ( (line = file_in.readLine()) != null) 
        {
            ..................
         }

Автор: Entwickler 22.4.2007, 00:10
заменил, но он теперь только последнюю строчку читает и кодирует... smile  непойму ничего... smile 

Автор: cube 22.4.2007, 00:26
Цитата(cube @ 21.4.2007,  23:56)
Это твой код:
Код

        BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line = file_in.readLine();


Сделай вот так:
Код

        BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line;
        while ( (line = file_in.readLine()) != null) 
        {
            ..................
         }

в тело цикла установи

System.out.println(line);

Посмотри в консоли что пишет? 

з.ы. просто while ( (line = file_in.readLine()) != null) цикл завершится только тогда когда line станет null, это произойдет когда весь файл будет прочитан до конца

Автор: Entwickler 22.4.2007, 11:42
работает, просто я там немного не так зделал.Нужно было сначало обьявить всё 
Код


                BufferedReader file_in = new BufferedReader(new FileReader(name));
        String line; 
        FileWriter fw = new FileWriter("kode.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        PrintWriter pw = new PrintWriter(bw);
        while (( line = file_in.readLine()) != null)
        {
            
            StringBuffer buf = new StringBuffer(line);
            for (int i = 0; i < buf.length(); ++i)
                buf.setCharAt(i, kodieren(buf.charAt(i)));

            pw.print(buf);
                }
            pw.close();
            bw.close();
            fw.close();
        
 а потом писать сам цикл...теперь всё в норме, только в конечном файле не соблюдются обрыв строки всё в одну строку пишиться.... в чём может быть дело?

Автор: LSD 22.4.2007, 13:45
Цитата(Entwickler @  22.4.2007,  12:42 Найти цитируемый пост)
а потом писать сам цикл...теперь всё в норме, только в конечном файле не соблюдются обрыв строки всё в одну строку пишиться.... в чём может быть дело?

Потому что readLine() возвращает сроку без символов перевода строки. Добавь их сам.

Автор: Entwickler 22.4.2007, 14:39
как...  smile 

Автор: Foo 22.4.2007, 15:06
Код

pw.print(buf.append('\n'));

Автор: LSD 22.4.2007, 16:26
Лучше и проще вместо print() использовать println().

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)