如何使用Java处理多种文件类型(即ANSI、UTF-8等)
我正在尝试使用特定的文件编码[即UTF-8]写入新的CSV文件,使用Java中的InputStream上载CSV文件,并将其传递给另一个具有文件位置的函数 如果我将任何文件转换为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(
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