2013-11-07 1 views
0

Есть две проблем:буферный читатель копирование, как это и не принимают значения

  1. Путь в читателе файла является фактическим путем, но я хочу relative path
  2. После прочтения содержимого из файла Я храню это содержимое в строке, и когда я печатаю строку, она не печатает фактические значения cn and ci, следующий за кодом.

    String content = ""; 
    String cn, ci; 
    cn = request.getParameter("carrier_name"); 
    ci = request.getParameter("carrier_id"); 
    BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\abcd\\Documents\\NetBeansProjects\\sendmail\\web\\mailformat.html")); 
    String str; 
    while ((str = in.readLine()) != null) { 
        content += str; 
    } 
    
    in.close(); 
    out.println(""+content+""); 
    

mailformat.html

hello 
carrier name :<label >"+cn+"</label> 
carrier id <label>"+ci+"</label> 
+0

Мне кажется, что эту проблему лучше решить с помощью JSP или какой-либо другой системы шаблонов, вместо того чтобы писать собственные. – haraldK

ответ

1

Вы не можете просто прочитать в тексте и ожидать, что JVM, чтобы понять это и рассматривать его как формат пользовательских строк. Вы должны пройти строку, которую вы читаете из файла, и найти маркеры, которые должны быть заменены параметрами.

Этот метод может пригодиться: String.replace(CharSequence, CharSequennce)

Для относительного пути части: Просто используйте относительный путь. Магии нет.

0

Чтобы получить относительный путь к веб-приложению можно использовать ServletContext#getRealPath

Но так как это, кажется, шаблон для почтового сообщения вы можете просто положить в свой путь к классам и получить его с помощью getClass().getResourceAsStream(name)

InputStream is = getClass().getResourceAsStream(name); 
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); 

Что касается получения значений в содержание можно заменить держатель темпа

<label >"+cn+"</label> 

и

<label >"+ci+"</label> 

со значениями, получаемыми с помощью запроса String#replace(str, replacement).

1

Создайте экземпляр файла с вашего пути. Обратите внимание, что относительный путь должен быть относительно чего-то, например текущего каталога. BTW, используйте «/» вместо «\» в пути, так как Windows все равно, его дружественный * nix, и вы избегаете всех экранов.

Используйте StringBuilder вместо конкатенации строки. Он более эффективен и более гибкий.

Инициализировать не конечные локальные переменные до нуля; это хорошая практика.

Вы ничего не делаете в коде, который вы показываете с помощью cn и ci. Вы намерены заменить «cn» и «ci» по содержанию значениями переменных? Вам нужно будет найти какую-то находку и заменить.

Смежные вопросы