public class DataInputAndOutput { public static void main(String[] args) throws IOException {
try {
FileOutputStream fos = new FileOutputStream("f://myDoc/s4.txt");
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(fos));
float[]prices={105.5f,65.5f,59.5f};
int[]amounts={10,15,22};
String[]names={"Java","Sql","Jsp"};
for(int i=0;i<prices.length;i++){
out.writeFloat(prices[i]);
out.writeInt(amounts[i]);
out.writeUTF(names[i]);
out.writeChars("\n");
}
out.close();
fos.close();
DataInputStream in = new DataInputStream(new BufferedInputStream
(new FileInputStream("f://myDoc/s4.txt")));
double price;
int amount;
String name;
double total=0.0;
System.out.println("您的订单如下:\n书名\t数量\t单价");
while(in.available()!=0){
price = in.readFloat();
amount = in.readInt();
name = in.readUTF();
System.out.println(name+"\t"+amount+"\t$"+price);
total=total+amount*price;
in.readLine();
}
in.close();
} catch (FileNotFoundException e) {
System.out.println("文件没找到!");
}
}
}为什么这段代码中的内容写在在文件里的事乱码,而输出到控制台却正常,该怎么修改,谢谢!
try {
FileOutputStream fos = new FileOutputStream("f://myDoc/s4.txt");
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(fos));
float[]prices={105.5f,65.5f,59.5f};
int[]amounts={10,15,22};
String[]names={"Java","Sql","Jsp"};
for(int i=0;i<prices.length;i++){
out.writeFloat(prices[i]);
out.writeInt(amounts[i]);
out.writeUTF(names[i]);
out.writeChars("\n");
}
out.close();
fos.close();
DataInputStream in = new DataInputStream(new BufferedInputStream
(new FileInputStream("f://myDoc/s4.txt")));
double price;
int amount;
String name;
double total=0.0;
System.out.println("您的订单如下:\n书名\t数量\t单价");
while(in.available()!=0){
price = in.readFloat();
amount = in.readInt();
name = in.readUTF();
System.out.println(name+"\t"+amount+"\t$"+price);
total=total+amount*price;
in.readLine();
}
in.close();
} catch (FileNotFoundException e) {
System.out.println("文件没找到!");
}
}
}为什么这段代码中的内容写在在文件里的事乱码,而输出到控制台却正常,该怎么修改,谢谢!
price = in.readFloat();
amount = in.readInt();
name = in.readUTF();
java 帮你转码了,所以你能在控制台看到正常输出。
try {
// FileOutputStream fos = new FileOutputStream("s4.txt");
// DataOutputStream out = new DataOutputStream(
// new BufferedOutputStream(fos));
FileWriter fw = new FileWriter("s4.txt");
PrintWriter out = new PrintWriter(new BufferedWriter(fw));
float[] prices = { 105.5f, 65.5f, 59.5f };
int[] amounts = { 10, 15, 22 };
String[] names = { "Java", "Sql", "Jsp" };
for (int i = 0; i < prices.length; i++) {
out.write(names[i]+"\t");
out.write(String.valueOf("$"+prices[i])+"\t");
out.write(String.valueOf(amounts[i])+"\t");
out.write("\n");
// out.writeFloat(prices[i]);
// out.writeInt(amounts[i]);
// out.writeUTF(names[i]);
// out.writeChars("\n");
}
out.flush();
out.close();
DataInputStream in = new DataInputStream(new BufferedInputStream(
new FileInputStream("s4.txt")));
InputStreamReader isr = new InputStreamReader(in, "utf-8");
System.out.println("您的订单如下:\n书名\t数量\t单价");
char[] cbuf = new char[200];
int str = 0;
while ((str = isr.read(cbuf))!= -1){
System.out.print(cbuf);
}
isr.getEncoding();
isr.close();
} catch (FileNotFoundException e) {
System.out.println("文件没找到!");
}
}
}
//为了说你实现字节流转换成字符流,特意用字节流读取,在转化成字符流,其实可以直接字符流读取数据。具体情况具体分析,能抓到猫的老鼠就是好老鼠。