2012-03-14 13 views
6

Sto copiando alcune classi CSS in un file. Le classi vengono copiate molto bene, ma ho un problema che quando sto provando ad aprirlo usando il blocco note dà un quadrato invece del carattere \n. Si apre bene in Modifica +. Ecco il mio codice:non riconosce il carattere 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"); 
} 

anche vedere questo formato funzione()

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; 

    } 

come farlo mostrare correttamente nel blocco note?

risposta

16

Windows utilizza \r\n per la nuova riga. Utilizzare la proprietà line.separator invece:

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

grazie per il vostro aiuto – dhananjay

4

Usa System.getProperty("line.separator");, non hardcoded "\n", come separatore di linea su Windows è "\r\n" o, in questo caso, utilizzare s' BufferedWriternewLine() metodo:

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

se si considera un codice come questo non è utile main = main.concat (part.trim(). Concat (";")). Concat ("\ n"); – dhananjay

+0

Usa: 'main = main.concat (part.trim(). Concat ("; ")). Concat (System.getProperty (" line.separator "));'? – hmjd

+0

line.separator dovrebbe passare in doppia citazione ?? – dhananjay

Problemi correlati