在Java中通过Inputstream读取内容时删除列名

在Java中通过Inputstream读取内容时删除列名,java,inputstream,bufferedreader,fileoutputstream,bufferedwriter,Java,Inputstream,Bufferedreader,Fileoutputstream,Bufferedwriter,我一直在尝试删除读取http get返回的响应内容时出现的列名 最初我使用httpget获取内容,然后使用InputStream读取此内容,然后使用FileOutputStream将其作为csv文件写入本地磁盘: InputStream read_content = result.getEntity().getContent(); FileOutputStream writ = new FileOutputStream(new File(path)); byte[] buff = new byt

我一直在尝试删除读取http get返回的响应内容时出现的列名

最初我使用
httpget
获取内容,然后使用
InputStream
读取此内容,然后使用
FileOutputStream
将其作为
csv
文件写入本地磁盘:

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
是我从
httpget
得到的响应。这很好,但问题是响应还包含我要删除的列名

经过一些修改后,我现在正在使用此代码,但输出不正确:

           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());
            }

当我执行这个修改过的代码时,我得到了垃圾结果。我在这里做错了什么?如何删除表列名?

如果它是一行,其他内容也是,请使用
BufferedReader.readLine(),
并跳过第一行。

您的代码应该是这样的

           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();
        }
    }
不要和整个代码混淆,我刚刚把你的
替换掉了。write(reader.read())带有

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

我正在
SYSOUT
中调用
br.readLine()
,因此将跳过标题。然后我用
br.readLine()

编写文件,其中包含什么标题?@EJP很抱歉,我不清楚。标题包含表列names@EJP您能告诉我如何使用
BufferedReader.readLine()
删除列名吗?我认为您这样做是正确的,但您正在使用
reader.read()
编写文件,即使您在编写之前调用了
reader.readLine()
,它也会从第一行读取。。可以使用另一种替代方法来编写file@looser很抱歉,我不明白你的意思。有些建议是使用
reader.readline()
在写入csv之前,我使用了它,但它弄乱了整个输出。你能指出我哪里出了问题,我如何纠正我的上述代码以正确工作。你能告诉我如何使用BufferedReader.readLine()在写入
csv
文件时读取
http get
响应并删除列名吗?呃,调用
readLine()
在您开始复制到CSV之前有一次?我对代码进行了修改,但现在输出不正确。我已修改了上面的帖子以包含更新的代码。您能告诉我我做错了什么吗?我尝试了这种方法。尽管第一行被删除,但之后的所有内容都作为一行而不是一行写入文件中多行。当我当时使用前一种方法时,我将所有行分开使用
out.newline()。