java写入文件编码格式为ansi_java中怎么获取、设置文件编码格式?

public class OutputStreamWriterTest {

public static void main(String[] args) {

try {

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("e:\\test.txt"));

osw.write("学海无涯,维勤是岸!!!");

System.out.println("文件默认编码:" + osw.getEncoding());// 使用getEncoding()方法取得当前系统的默认字符编码

osw.close();

/*

* 如果在调用FileOutputStream的构造方法时没有加入true,那么新加入的字符串就会替换掉原来写入的字符串,

* 在调用构造方法时指定了字符的编码,新写入的字符,会使用新指定的编码

*/

osw = new OutputStreamWriter(new FileOutputStream("e:\\test.txt", true), "ISO8859_1");

osw.write("他山之石,可以攻玉!!!");

System.out.println("修改文件编码之后getEncoding:" + osw.getEncoding());

osw.close();

System.out.println(codeString("e:\\test.txt"));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

}

}

public static String codeString(String fileName) throws Exception {

BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fileName));

int p = (bin.read() << 8) + bin.read();

String code = null;

// 其中的 0xefbb、0xfffe、0xfeff、0x5c75这些都是这个文件的前面两个字节的16进制数

switch (p) {

case 0xefbb:

code = "UTF-8";

break;

case 0xfffe:

code = "Unicode";

break;

case 0xfeff:

code = "UTF-16BE";

break;

case 0x5c75:

code = "ANSI|ASCII";

break;

default:

code = "GBK";

}

return code;

}

}

运行程序后输出:

文件默认编码:UTF8

修改文件编码之后getEncoding:ISO8859_1

GBK

问题1:java 中是怎么设置文件的编码格式?有没有方法能指定新增文件编码格式?修改已存在的文件编码格式?

问题2:上面程序中创建的文件,到底是那种编码格式的?

请大神赐教,感激不尽……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,没有直接支持ANSI编码的类,因为ANSI编码是一个不确定的编码格式,它可能是Windows-1252、ISO-8859-1等多种编码格式。但是,你可以使用JavaOutputStreamWriter类和FileOutputStream类来创建文件设置文件编码格式为ISO-8859-1,它是ANSI编码的一个常见变种。然后,使用RandomAccessFile类来设置写入位置,再使用write方法向文件写入内容。下面是一个示例代码: ```java import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; public class CreateFileWithAnsiEncodingAndPositionWrite { public static void main(String[] args) throws IOException { File file = new File("test.txt"); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(fos, "ISO-8859-1"); osw.write("This is a sample text in ANSI encoding."); osw.close(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); raf.seek(10); // 设置写入位置为第10个字节 raf.write("ANSI".getBytes("ISO-8859-1")); raf.close(); } } ``` 在上面的示例代码,我们通过FileOutputStream类创建了一个名为test.txt的文件输出流,然后使用OutputStreamWriter类将输出流转换成字符输出流,并设置文件编码格式为ISO-8859-1。最后,使用write方法向文件写入一段ANSI编码的文本。然后,使用RandomAccessFile设置写入位置为第10个字节,再使用write方法向文件写入一段ANSI编码的文本。注意,需要使用"ISO-8859-1"作为编码格式,因为它是ANSI编码的一个常见变种。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值