1

Я пытался удалить имена столбцов, которые приходят, когда я прочитал содержимое ответа, возвращаемого http get.Удаление имен столбцов при чтении содержимого через Inputstream в Java

Первоначально я использовал http get, чтобы получить содержимое, а затем я прочитал это содержание с помощью InputStream, а затем записать на локальный диск как csv файл с помощью FileOutputStream:

InputStream read_content = result.getEntity().getContent(); 
FileOutputStream writ = new FileOutputStream(new File(path)); 
byte[] buff = new byte[4096]; 
int length; 
while ((length = read_content.read(buff)) > 0) { 
    writ.write(buff, 0, length); 
} 

Здесь result это ответ я получаю от http get. Это прекрасно работает, но проблема в том, что ответ также содержит имена столбцов, которые я хочу удалить.

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

  InputStream read_content = result.getEntity().getContent(); 

      BufferedReader reader = 
        new BufferedReader(new InputStreamReader(read_content)); 

      FileWriter fstream = new FileWriter(path); 
      BufferedWriter out = new BufferedWriter(fstream); 
      reader.readLine(); 
      while (reader.readLine() != null) { 
       out.write(reader.read()); 
      } 

Когда я выполняю этот измененный код, то я получаю мусор результата. Что я делаю неправильно здесь и как удалить имена столбцов таблицы?

+0

Содержит какой заголовок? – EJP

+0

@EJP Прошу прощения за то, что я не понимаю. Заголовок содержит имена столбцов таблицы – user2966197

+0

@EJP вы можете сказать, как я могу использовать 'BufferedReader.readLine()' для удаления имен столбцов? – user2966197

ответ

1

Yout код должен быть что-то вроде этого

  BufferedReader br = null  ; 
        BufferedWriter out = null; 
    try{ 

     InputStream is = new FileInputStream(new File("C:/Space/ConnTest/Test/input.txt")); 
     br = new BufferedReader(new InputStreamReader(is)); 
     out = new BufferedWriter(new FileWriter(new File("C:/Space/ConnTest/Test/output.txt"))); 
     System.out.println("This is first line ---"+br.readLine()); 
     String str = ""; 
     while ((str = br.readLine()) != null) { 
      out.write(str); 
     } 
     System.out.println("Success"); 




    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     if(br!=null) 
     { 
      br.close(); 
     } 
     if(out!=null) 
     { 
      out.close(); 
     } 
    } 

Не будьте путать с всем кодом, который я только что заменил ваш out.write(reader.read()); с

while ((str = br.readLine()) != null) { 
      out.write(str); 
     } 

И я звоню br.readLine() в SYSOUT так заголовки будут получать пропускаются. Затем я пишу файл с br.readLine()

+0

Я пробовал этот путь. Даже если первая строка удаляется, но все содержимое после этого записывается в файл как одна строка вместо нескольких строк. Когда я использовал предыдущий путь, в то время я получал все строки отдельно – user2966197

+0

Я использовал 'out.newline()' внутри и теперь выглядит корректно. – user2966197

+0

спасибо за ваш ответ! – user2966197

0

Если это строка, и так далее, используйте BufferedReader.readLine(), и пропустите первую строку.

+0

Можете ли вы рассказать, как я могу использовать BufferedReader.readLine() для чтения ответа 'http get' и удаления имен столбцов при записи в файл' csv'? – user2966197

+0

Err, вызов 'readLine()' один раз, прежде чем вы начнете копирование в CSV? – EJP

+0

Я внес изменения в свой код, но теперь вывод не подходит. Я изменил свой пост выше, чтобы включить мой обновленный код. Можете ли вы сказать мне, что я делаю неправильно? – user2966197

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