如何处理多种文件类型(即ANSI,UTF-8等)Java

时间:2014-04-29 23:42:35

标签: java csv

我正在尝试使用上传的CSV文件(使用Java中的InputStream)写入新的CSV文件(使用特定的文件编码[即UTF-8])并将其传递给具有文件位置的另一个函数。

如果我将任何文件转换为UTF-8,无论编码如何,我都会丢失数据吗?如果是这样,我如何保留可能有变化风险的角色?

boolean success = false;

        try {
            OutputStream out = new FileOutputStream(new File(
                    uploadedFileLocation));

            //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(uploadedFileLocation), "UTF-8");

            int read = 0;
            byte[] bytes = new byte[1024];
            while ((read = uploadedInputStream.read()) != -1) {
                out.write(bytes, 0, read);
//              osw.write(read);
            }
            out.flush();
            out.close();
            /*osw.flush();
            osw.close();*/
            uploadedInputStream.close();

            success = true;

        } catch (IOException e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

当你创建InputStream(Buffered,File,等等)时,你可以给出charset ...... 读者将转换为Java中使用的UTF。 当你创建一个OuputStream时,它是一样的。给出编码,编写器将转换值。

事实上,从ISO - > UTF,你很安全。如果您尝试编写目标字符集中不存在的字符,则反向操作为false。类似的东西......(采取你喜欢的流层次结构)

new InputStreamReader(new FileInputStream(new File("")), Charset.forName("UTF-8"));
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file"), Charset.forName("UTF8")));