заменить 2 обратные косые черты на одну - PullRequest
1 голос
/ 22 ноября 2011

Я просмотрел вопросы и не смог найти решение.

У меня есть файл свойств, в котором пользователь хранит местоположение файла.

Например:

location = C:\images

В ответ на это я должен распечатать свойство location и оно напечатает его так:

C:images

Если я введу местоположение:

C:\\images\\

, оно напечатает его следующим образомэто (как если бы он не обрабатывал строку:

C:\\images\\

Я хотел бы просто напечатать это C:\images\

Как я могу это сделать?

Это также относится к тому, где я хочу написать HTML-тег, подобный этому:

<img src ='"+locations+"'>

Большинство браузеров извлекают местоположение с двойной обратной косой чертой, но я не предпочитаю полагаться на него. РЕДАКТИРОВАТЬ

Извините - моя ошибка. Теперь вопрос в порядке. Пожалуйста, не обращайте внимания на то, что C: \ не доступен через веб-браузер

РЕДАКТИРОВАТЬ

Я использую реализацию Jerrsey для ответа клиента, который использует Jax-B для записи ответа, подобного этому:

    com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(Object t, MediaType mediaType, Charset c, Marshaller m, OutputStream entityStream) throws JAXBException:

 protected void writeTo(Object t, MediaType mediaType, Charset c,
            Marshaller m, OutputStream entityStream)
            throws JAXBException {
        m.marshal(t, entityStream);
    }

Поток вывода com.sun.jersey.spi.container.ContainerResponse.CommittingOutputStream

Я видел, что свойства загружаются только с 1.

Я получил ответ в своем клиентском инструменте отдыха от WizTools.org

Может ли это быть проблемой?

Ответы [ 3 ]

2 голосов
/ 22 ноября 2011

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

location=file:/C:/images/

или (чтобы предложить папку без "/")

directory=file:/C:/images

Regards

2 голосов
/ 22 ноября 2011

Спецификация для формата файла свойств Java находится в javadoc для метода Properties.load(Reader). В нем четко указано, что обратный слеш должен быть экранированным. В нем также говорится, что обратная косая черта, за которой следует какой-либо символ, отличный от допустимых escape-кодов, тихо отбрасывается .

Я могу только заключить, что вы не используете один из load методов объекта Properties для загрузки свойств из вашего файла. И, по сути, вы не следуете спецификации файла свойств Java.

У вас может быть какая-то причина сделать обе эти вещи, но если вы это сделаете, вам не следует называть ваш нестандартный формат файла «файлами свойств» ... потому что люди ожидают, что файлы свойств Java будут следовать спецификации.


Однако я бы порекомендовал вам просто использовать стандартный формат / спецификацию и просто использовать Properties.load(...) и Properties.save(...) для чтения и записи файлов свойств.

2 голосов
/ 22 ноября 2011

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

location = c:\\images\\

Это должно быть хорошо.

Например, вот небольшое консольное приложение:

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

public class Test {
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        // Would normally close the stream, of course :)
        properties.load(new FileInputStream("test.properties"));
        System.out.println(properties.getProperty("location"));
    }
}

Учитывая файл test.properties, который просто содержит строку, показанную ранее, которая печатает c:\images\ без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...