Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прописать путь к файлу в программе 
:(
    Опции темы
John2
Дата 27.1.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 30.6.2009

Репутация: нет
Всего: нет



Хотел бы применить одну программу для преобразования текстового файла, написанного в кодировке utf-8, в вид, понятный для прочтения мидлетом. Код программы взят отсюда. 
В ней автор статьи объясняет, что для этого необходимо: 
1) Создать  2 текстовых файла - один исходный, второй - для записи в него преобразованных данных.
С этим понятно.

2) Далее автор статьи говорит: "Далее нужно просто запустить конвертор, указав в качестве параметров путь к исходному файлу и путь к результирующему файлу".
Здесь мне непонятно - как указать эти параметры.

Как я понял из кода программы - эти данные необходимы для параметров конструкторов класса File. Из документации к классу File я понял, что путь к файлу необходимо указывать в Windows в таком виде: "C:\pathname\toFile\namefile.extension". Если не прав, пожалуйста исправьте.

Не ясно, где именно в коде нужно прописать эти параметры.
Здесь полный код программы:
Код

package ru.quadrate.localization;

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

/**
* <p>Title: Helper</p>
* <p>Description: Converts files with messages to display from human-readable format to
* midlet-readable format.</p>
* <p>Copyright: Copyright Quadrate(c) 2003</p>
* @author Quadrate
* @version 1.0
*/
public class Helper {

  private final static String FILE_CHARACTER_SET = "UTF-8";
  private final static String DELIMITER = "=";

  /**
  * No instances
  */
  private Helper() {  }

  public static void main(String[] args) {
    if (args.length != 2) {
      System.out.println("Illegal parameters. Please specify source file and destination file names.");
    } else {
      // Open in and out streams
      File sourceFile = new File(args[0]);
      File destFile = new File(args[1]);
      FileInputStream in = null;
      BufferedReader inReader = null;
      FileOutputStream out = null;
      DataOutputStream outWriter = null;
      try {
        // open source
        in = new FileInputStream(sourceFile);
        in.skip(3);
        inReader = new BufferedReader(new InputStreamReader (in, FILE_CHARACTER_SET));
        // open destination
        out = new FileOutputStream(destFile);
        outWriter = new DataOutputStream(out);

        Hashtable stringsTable = new Hashtable();
        readSourceContent(inReader, stringsTable);

        writeContent(outWriter, stringsTable);
      } catch (Exception ex) {
        ex.printStackTrace();
      } finally {
        try {
          if (in != null) {
            in.close();
          }
          if (out != null) {
            out.close();
          }
        } catch (Exception ex) {
          ex.printStackTrace();
        }
      }
    }
  }

  /**
  * Writes hashtable content into the stream specified.
  * @param outWriter
  * @param stringsTable
  * @throws IOException
  */
  private static void writeContent(DataOutputStream outWriter,
  Hashtable stringsTable) throws IOException {
    for (Enumeration en = stringsTable.keys(); en.hasMoreElements();) {
      String key = (String) en.nextElement();
      String value = (String) stringsTable.get(key);
      outWriter.writeUTF(key);
      outWriter.writeUTF(value);
    }
  }

  /**
  * Reads and parses content of the source file.
  * @param inReader
  * @param stringsTable
  * @throws IOException
  */
  private static void readSourceContent(BufferedReader inReader,
  Hashtable stringsTable) throws IOException, ParseException {
    String line = null;
    String prevKey = null;
    while ((line = inReader.readLine()) != null) {
      int delimiterPos = line.indexOf(DELIMITER);
      if (delimiterPos != -1) {
        String key = line.substring (0, delimiterPos);
        String value = line.substring (delimiterPos + 1);
        if (stringsTable.containsKey(key)) {
          if (prevKey.equals(key)) {
            StringBuffer buf = new StringBuffer((String) stringsTable.get(prevKey));
            buf.append("\n").append(value);
            value = buf.toString();
          } else {
            throw new ParseException("Duplicate key: " + key, 0);
          }
        }
        prevKey = key;
        stringsTable.put(key, value);
        System.out.println("key: " + key + "; value: " + value);
      }
    }
  }
}


Заранее спасибо за помощь!

PM MAIL   Вверх
jk1
Дата 27.1.2010, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Не ясно, где именно в коде нужно прописать эти параметры.

Не нужно их прописывать в коде. Приведенный код в качестве классов использует аргументы командной строки.

1) компилируем приведенный код: javac Helper.java
2) запускаем java Helper 1.txt 2.txt, где 1.txt - файл с исходным тестом, 2.txt - с конвертированным


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
John2
Дата 28.1.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 30.6.2009

Репутация: нет
Всего: нет



Большое спасибо - всё сработало!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.