2012-03-14 3 views
6

Я копирую некоторые классы CSS в один файл. Классы копируются очень хорошо, но у меня есть проблема, когда я пытаюсь открыть его с помощью блокнота, он дает один квадрат вместо символа \n. Он хорошо открывается в Edit +. Вот мой код:Блокнот не распознает символ n?

String fileName = new File(oldFileName).getName(); 
BufferedWriter out = null; 

FileWriter fw = new FileWriter("D:\\temp\\UPDATED_"+fileName); 
out = new BufferedWriter(fw); 

for (CSSStyleRule p : finlist.values()) { 
    String t = null; 
    String m = p.toString(); 
    if (m.charAt(0) == '*') { 
     t = m.substring(1); 
    } else { 
     t = m; 
    } 

    String main = format(t); 
    out.write(main); 
    out.write("\n"); 
} 

также видеть этот формат функция()

private static String format(String input) { 
     int s = input.indexOf('{'); 
     int p = input.indexOf('}'); 
     int w = input.indexOf(';'); 
     if(w==-1) 
     { 
      w=p-1; 
      String []part=input.split("}"); 
     input= part[0].concat(";").concat("}"); 
     } 

     String m = input.substring(0, s).trim().concat("{\n") 
       .concat(input.substring(s + 1, w + 1).trim()) 
       .concat(input.substring(w + 1, p)); 
     String a[] = m.split(";"); 
     String main = ""; 
     for (String part : a) { 
      if (part.contains("rgb")) { 
       part = convert(part); 
      } 
      if(part.contains("FONT-FAMILY") || part.contains("font-family")){ 
       part=process(part); 
      } 

      main = main.concat(part.trim().concat(";")).concat("\n"); 
     } 
     main = main.concat("}"); 
     return main; 

    } 

Как сделать это правильно отображаться в блокноте?

ответ

16

Windows использует \r\n для новой линии. Используйте line.separator свойство вместо:

public static String newLine = System.getProperty("line.separator"); 
//... 
out.write(newLine); 
+0

спасибо за вашу помощь – dhananjay

4

Использование System.getProperty("line.separator");, не жёстко "\n", как разделитель строки на окнах "\r\n" или, в данном случае, используйте BufferedWriter «s newLine() метод:

out.write(main); 
out.newLine(); 
+0

, если вы рассматриваете такой код, это не полезно main = main.concat (part.trim(). Concat (";")). Concat ("\ n"); – dhananjay

+0

Использование: 'main = main.concat (part.trim(). Concat ("; ")). Concat (System.getProperty (" line.separator "));'? – hmjd

+0

line.separator должен проходить в двойной кавычки ?? – dhananjay