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

如何使用Java处理多种文件类型(即ANSI、UTF-8等),java,csv,Java,Csv,我正在尝试使用特定的文件编码[即UTF-8]写入新的CSV文件,使用Java中的InputStream上载CSV文件,并将其传递给另一个具有文件位置的函数 如果我将任何文件转换为UTF-8,而不考虑编码,我会丢失数据吗?如果是这样,我如何保存可能会发生更改的角色 boolean success = false; try { OutputStream out = new FileOutputStream(new File(

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

如果我将任何文件转换为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();
        }

当您创建InputStream缓冲文件时,您可以给字符集。。。 读取器将转换为Java中使用的UTF。 创建输出流时,也是一样的。给出编码,编写器将转换值

事实上,从ISO->UTF,您是安全的。如果尝试写入目标字符集中不存在的字符,则反向操作为false。类似于。。。采用您喜欢的流层次结构

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

当我将文件从ANSI转换为UTF-8时,似乎丢失了数据,有什么特殊原因导致这种情况发生吗?有什么方法可以保存数据吗?不应该发生。无法向你解释:s