簡體   English   中英

從Java生成的CSV文件添加了不需要的問號(?)

[英]CSV file generated from Java adds unwanted question mark (?)

我正在從Java代碼創建CSV文件。 (我還生成了相同的HTMLtxt文件。問題仍然相同。)

代碼如下。

private String writeToFile(StringBuffer csvData, long randomDigits, String type) {
    String fileName = "";
    String filePath = "";
    if ("CSV".equals(type)) {
        filePath = WebConstants.PATH + randomDigits + "CSV.csv";
        fileName = randomDigits + "CSV.csv";
    }
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
        bw.write(csvData.toString());
        bw.flush();
        bw.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return fileName;
}

現在,生成文件后,所有數據看起來都正確。 但是在文件末尾,有一個問號(?),它是不需要的。 我調試了代碼,當bw.write(csvData.toString())時, bw.write(csvData.toString())的值csvData不包含問號。

這就是我創建StringBuffer csvData

private StringBuffer saveAsCVSFile(Vector<XYZVO> list) {

    StringBuffer csvData = new StringBuffer();
    XYZVO VO = null;
    if (list != null) {
        for (int i = 0; i < list.size(); i++) {
            VO = list.get(i);
            csvData.append(VO.getABC()+",");
            csvData.append(VO.getDEF()+",");
            csvData.append(VO.getGHI()+",");
            csvData.append(VO.getJKL()+",");
            csvData.append(VO.getMNO()+"\n");
        }
    }
    return csvData;
}

在這里, XYZVO包含所有Stringint變量。

我還添加了一個代碼來讀取生成的文件,如下所示。

private void checkFileData(String filePath) {
        try {
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            String line = null;
            while((line = br.readLine()) != null) {
                System.out.println("Line X: "+line);
            }
        } catch(FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

當我在控制台中檢查此已讀取代碼的輸出時,它根本沒有在最后顯示問號。

如果有人有任何想法,請告知。

當您關閉編寫器時,將首先刷新它。 因此,關閉前無需沖洗。 嘗試刪除它。

我使用FileWriter實現了相同的目的:

try
    {
    FileWriter writer=new FileWriter(csv);
    writer.append("Mobile Number");
    writer.append(',');
    writer.append("Message");
    writer.append(',');
    writer.append("Service");
    writer.append(',');
    writer.append("Time");
    writer.append('\n');


    writer.append(mobileNumber);
    writer.append(',');
    writer.append(message);
    writer.append(',');
    writer.append(service);
    writer.append(',');
    writer.append(time);
    writer.append('\n');

    writer.flush();
    writer.close();
}
catch(Exception e){
    //catch Exception here
}

使用你的代碼

我使用了您的代碼,但是它在我的工作中.......

public static void main(String[] args) throws URISyntaxException, UnknownHostException, ClassNotFoundException{
        Test a = new Test();
        Vector<MyObject> testObj =  new Vector<MyObject>();
        testObj.add(new MyObject());
        testObj.add(new MyObject());
        testObj.add(new MyObject());
        a.checkFileData(a.writeToFile(a.saveAsCVSFile(testObj),123456789 , "CSV"));

    }


    private StringBuffer saveAsCVSFile(Vector<MyObject> list) {

        StringBuffer csvData = new StringBuffer();
        MyObject VO = null;
        if (list != null) {
            for (int i = 0; i < list.size(); i++) {
                VO = list.get(i);
                csvData.append(VO.getABC()+",");
                csvData.append(VO.getDEF()+",");
                csvData.append(VO.getGHI()+",");
                csvData.append(VO.getJKL()+",");
                csvData.append(VO.getMNO()+"\n");
            }
        }
        return csvData;
    }

    private void checkFileData(String filePath) {
        try {

            BufferedReader br = new BufferedReader(new FileReader(filePath));
            String line = null;
            while((line = br.readLine()) != null) {
                System.out.println("Line X: "+line);
            }
            br.close();
        } catch(FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



    private String writeToFile(StringBuffer csvData, long randomDigits, String type) {
        String fileName = "";
        String filePath = "";
        if ("CSV".equals(type)) {
            filePath = randomDigits + "CSV.csv";
            fileName = randomDigits + "CSV.csv";
        }
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
            bw.write(csvData.toString());
            bw.flush();
            bw.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return fileName;
    }


class MyObject{
    static int count =1;

    public String getABC() {
        return "ABC"+(++count);
    }

    public String getMNO() {
        return "MNO"+count;
    }

    public String getJKL() {
        return "JKL"+count;
    }

    public String getGHI() {
        return "GHI"+count;
    }

    public String getDEF() {
        return "DEF"+count;
    }
}

產量

Line X: ABC2,DEF2,GHI2,JKL2,MNO2
Line X: ABC3,DEF3,GHI3,JKL3,MNO3
Line X: ABC4,DEF4,GHI4,JKL4,MNO4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM