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


Автор: ElKa 12.4.2008, 00:40
нужно написать программу-переводчик, считывающую содержимое tex-файла и записывающую данные после перевода в файл с расширением  csp
как  реализуется чтение/запись таких файлов? так же как с простыми текстовыми файлами? или есть какие-то особенности? 

Автор: Samotnik 12.4.2008, 16:31
Судя по словам  википеди
Цитата

TEΧ (обычным текстом — TeX) — система компьютерной вёрстки, разработанная американским профессором информатики Дональдом Кнутом в целях создания компьютерной типографии. В неё входят средства для секционирования документов, для работы с перекрёстными ссылками и для набора сложных математических формул.

Название произносится как «тех» (от греч. τέχνη — «искусство», «мастерство»). В написании буква E опущена ниже T и X.

Документы набираются на собственном языке разметки в виде обычных ASCII-файлов, содержащих информацию о форматировании текста или выводе изображений. Эти файлы (обычно имеющие расширение «.tex») транслируются специальной программой в файлы «.dvi» (device independent — «независимые от устройства»), которые могут быть отображены на экране или напечатаны. DVI-файлы можно специальными программами преобразовать в PostScript, PDF, или другой электронный формат.

Ядро TeX’а представляет собой язык низкоуровневой разметки, содержащий команды отступа и смены шрифта. Огромные возможности в TeX’е предоставляют готовые наборы макросов и расширений. Наиболее распространённые расширения стандартного ТеХ’а (наборы шаблонов, стилей и т.д): LaTeX (произносится «лате́х») и AMS-TeX. При использовании пакета расширения LaTeX можно превратить разросшуюся статью в книгу изменением одного слова в исходнике, вставлять оглавление одной командой, не задумываться о нумерации разделов, теорем, рисунков. Есть много пакетов для оформления химических формул (например, пакет XymTeX), диаграмм (xypic), создания презентаций и визитных карточек и тому подобного.

Распространённые комплекты вёрстки на основе ТеХ’а: для Windows — TeX Live или MikTeX, для UNIX-подобных систем — TeX Live или teTeX.

Для создания шрифтов совместно с TeX’ом используется специально разработанная система METAFONT, в которой шрифты описываются программами на специализированном языке Meta. Могут также использоваться векторные шрифты в формате PostScript Type 1 и TrueType.

TEΧ применяется в исходных текстах Википедии для набора математических формул (см. Википедия:Формулы).

Прочитать его как обычный файл вряд ли получится,  попробуйте утилиту для чтения   .pdf    к  примеру   itext  (ИМХО  самая понятная и  удобная)

Автор: ElKa 12.4.2008, 18:33
написала тестовую программку, и вы знаете tex читается без проблем, так же как и текстовый файл
в шелл содержимое файла  выводится
а вот с записью проблема, даже если в txt-файл пытаюсь записать
и ошибку не выдает, если файла вывода нет

а ошибку в коде я не вижу 
посмотрите пожалуйста 

Код

import java.io.*;
 
class Tool {
   public static void main (String args []) throws IOException {
      int i;
      FileInputStream fin;
      FileOutputStream fout;
      try {
         // open input file          
         try {
            fin = new FileInputStream (args[0]);
         }
         catch (FileNotFoundException e) {
            System.out.println ("input file not found");
            return;          
         }
         // open output file
         try {
        fout = new FileOutputStream (args [0]);     
     }
     catch (FileNotFoundException e) {
            System.out.println ("output file not found");
            return;        
     }
      }
      catch (ArrayIndexOutOfBoundsException e) {
     System.out.println ("Tool copys input file into output file");
     return;
      }
      // copy file
      try {
         do {
            i = fin.read();
            if (i!= -1) fout.write(i);
         } while (i!= -1);
      }
      catch (IOException e) {
     System.out.println ("file error");     
      }
   
      fin.close();
      fout.close();

   }
}

Автор: Samotnik 12.4.2008, 20:20
ElKa,  в  где сам файл ? 

Автор: ElKa 12.4.2008, 23:04
Samotnik

ну вот например tex-файл со словом test..  
после запуска java Tool test.tex test.txt (или test.csp) содержимое стирается а, в файл вывода не записывается.. 

Автор: Samotnik 12.4.2008, 23:06
ААа...  )
ты с косолью работаеш ))

Автор: Samotnik 13.4.2008, 00:12
Код

import java.io.*;

class Tool {
   public static void main (String args []) throws IOException {
     int  i;
       FileInputStream fin;
       FileOutputStream fos;
       try{
           // open file
           try{
               fin = new FileInputStream(args[0]);
            } catch(FileNotFoundException ex){
               System.out.println("WARNING!   FILE  NOT  FOUND  " + ex);
               return;
           }
           try{
               fos = new FileOutputStream(args[1]);
           }catch(FileNotFoundException ex){
               System.out.println("WARNING  FILE NOT  FOUND  " + ex);
               return;
       }
      } catch(ArrayIndexOutOfBoundsException ex){
    System.out.println("errorr " + ex);
           return;
}
       try{
           do{
               i = fin.read();
               if(i!=-1)
               fos.write(i);
           } while (i != -1);
       } catch (IOException ex){
           System.out.println("Warning  " + ex);
       }
       fin.close();
       fos.close();
   }  }

Автор: ElKa 13.4.2008, 01:08
Samotnik

спасибо большое! и в csp-файл тоже записывает.. кто бы мог подумать smile 

но если файла вывода нет, то он создается, хотя по коду вроде ошибка должна выдаваться 
или я чего-то не поняла? 

Автор: Samotnik 13.4.2008, 01:16
Цитата(ElKa @  13.4.2008,  01:08 Найти цитируемый пост)
но если файла вывода нет, то он создается, хотя по коду вроде ошибка должна выдаваться или я чего-то не поняла? 

почему?   ошибки не  должно быть ! 

Цитата(ElKa @  13.4.2008,  01:08 Найти цитируемый пост)
или я чего-то не поняла? 

возможно  smile   читай  доки http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html
Цитата

public class FileOutputStream
extends OutputStream

A file output stream is an output stream for writing data to a File or to a FileDescriptor. Whether or not a file is available or may be created depends upon the underlying platform. Some platforms, in particular, allow a file to be opened for writing by only one FileOutputStream (or other file-writing object) at a time. In such situations the constructors in this class will fail if the file involved is already open.

Автор: ElKa 13.4.2008, 01:54
Samotnik

спасибо за помощь!!!  smile я пока тему не буду закрывать.. вдруг еще вопросы появятся  smile 

Автор: Samotnik 13.4.2008, 03:37
ElKa,  пажалста,  приходи  еще ! 
 ОБЯЗАТЕЛЬНО !!!  smile 

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