2012-03-21 6 views
0

Я следующий кодRandom File Access Write Ending с дополнительными пространствами Java

RandomAccessFile file_test = new RandomAccessFile("C:\\Test Folder\\test4.doc", "rws"); 
    StringBuffer st = new StringBuffer(); 

    st.append("Writing to File"); 

    file_test.writeChars(st.toString()); 
    file_test.seek(0); 

    System.out.println(file_test.readLine()); 

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

W т я т и н т о л я Р е

вместо

г

Запись в файл

Любые предложения о том, как это исправить?

+0

Нет, на выходе нет пробелов. Вы прочитали документацию по API и поняли, что на самом деле должен делать метод writeChars? – jarnbjo

+0

Когда вы открываете файл .doc или .txt, там есть пробелы. Когда я пишу, нет пробелов, но я читал, что вы не хотите представлять символы с байтами. –

ответ

1

Если вы собираетесь писать в текстовый файл, используйте любой класс Writer или OutputStream вместо RandomAccessFile, который предназначен для двоичных файлов.

OutputStreamWriter osw = null; 
     try 
     { 
      osw = new OutputStreamWriter(new FileOutputStream("textfile.txt"), "ISO-8859-1"); 
      osw.write("Here comes some output"); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     }finally { 
      if(osw != null) { 
       try 
       { 
        osw.close(); 
       } 
       catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     } 
1

Если вы в этой ситуации должны использовать RandomAccessFile, попробуйте использовать writeUTF и посмотрите, поможет ли это.

file_test.writeUTF(st.toString()); 

Не забудьте закрыть файл, когда закончите.

file_test.close();