新手java求解,关于文本文档的写入和读取。。

qq_21943455 2014-10-16 10:44:10
package sample;
import java.util.*;
import java.io.*;

public class Wenjian {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
double [] b=new double[5];
double [] d=new double[5];
System.out.println("请输入5个浮点数");
@SuppressWarnings("resource")
Scanner a=new Scanner(System.in);
for(int i=0;i<5;i++)
b[i]=a.nextDouble();
RandomAccessFile rand=new RandomAccessFile("D:\\aaa.txt","rw");
for(int i=0;i<b.length;i++)
rand.writeDouble(b[i]);
@SuppressWarnings("resource")
Scanner scanner=new Scanner(new FileInputStream("D:\\aaa.txt"));
while(scanner.hasNextDouble()){
for(int i=0;i<5;i++)
d[i]=scanner.nextDouble();}
Arrays.sort(d);
for(int i=d.length-1;i>0;i--)
System.out.print(" "+d[i]);
for(int i=0;i<d.length;i++)
rand.writeDouble(d[i]);
rand.close();
}

}


rand.writeDouble(b[i]);
就是这句 为什么写入之后都是乱码。求大神 讲解下
...全文
204 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzw1210 2014-10-16
  • 打赏
  • 举报
回复

while(rand.getFilePointer()>0){
                 System.out.println( new String(rand.readLine().getBytes("ISO-8859-1"), "gb2312")); //gb2312是你文本编码格式。    
 
        }
这段代码要放开
qq_21943455 2014-10-16
  • 打赏
  • 举报
回复
引用 7 楼 qu1210 的回复:
读文件乱码是因为在RandomAccessFile下用readLine的方式会自动将编码变成ISO-8859-1。所以只要按照如下方式即可 RandomAccessFile fl=new RandomAccessFile(file,"rw"); while(fl.getFilePointer() System.out.println( new String(fl.readLine().getBytes("ISO-8859-1"), "gb2312")); //gb2312是你文本编码格式。 } 使用RandomAccessFile向数据库写入中文的时候, *使用write(String.getBytes()), 能够正常写入 *使用writeBytes(String), writeChars(String), writeUTF(String)均产生乱码。

import java.util.*;
import java.io.*;

public class Wenjian {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		double[] b = new double[5];
		double[] d = new double[5];
		System.out.println("请输入5个浮点数");
		@SuppressWarnings("resource")
		Scanner a = new Scanner(System.in);
		for (int i = 0; i < 5; i++)
			b[i] = a.nextDouble();
		RandomAccessFile rand = new RandomAccessFile("D:\\aaa.txt", "rw");
		/*while(rand.getFilePointer()>0){
			     System.out.println( new String(rand.readLine().getBytes("ISO-8859-1"), "gb2312")); //gb2312是你文本编码格式。    

		}*/
		for (int i = 0; i < b.length; i++){
			System.out.println(b[i]);
			rand.write((b[i]+"").getBytes());
			rand.writeBytes(" ");
		}
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(new FileInputStream("D:\\aaa.txt"));
		while (scanner.hasNextDouble()) {
			for (int i = 0; i < 5; i++)
				d[i] = scanner.nextDouble();
		}
		Arrays.sort(d);
		for (int i = d.length - 1; i > 0; i--)
			System.out.print(" " + d[i]);
		for (int i = 0; i < d.length; i++)
			rand.writeDouble(d[i]);
		rand.close();
	}

}

受教了!
qzw1210 2014-10-16
  • 打赏
  • 举报
回复


读文件乱码是因为在RandomAccessFile下用readLine的方式会自动将编码变成ISO-8859-1。所以只要按照如下方式即可

RandomAccessFile fl=new RandomAccessFile(file,"rw");
while(fl.getFilePointer()
System.out.println( new String(fl.readLine().getBytes("ISO-8859-1"), "gb2312")); //gb2312是你文本编码格式。

}


使用RandomAccessFile向数据库写入中文的时候,

*使用write(String.getBytes()), 能够正常写入



*使用writeBytes(String), writeChars(String), writeUTF(String)均产生乱码。


import java.util.*;
import java.io.*;

public class Wenjian {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
double[] b = new double[5];
double[] d = new double[5];
System.out.println("请输入5个浮点数");
@SuppressWarnings("resource")
Scanner a = new Scanner(System.in);
for (int i = 0; i < 5; i++)
b[i] = a.nextDouble();
RandomAccessFile rand = new RandomAccessFile("D:\\aaa.txt", "rw");
/*while(rand.getFilePointer()>0){
System.out.println( new String(rand.readLine().getBytes("ISO-8859-1"), "gb2312")); //gb2312是你文本编码格式。

}*/
for (int i = 0; i < b.length; i++){
System.out.println(b[i]);
rand.write((b[i]+"").getBytes());
rand.writeBytes(" ");
}
@SuppressWarnings("resource")
Scanner scanner = new Scanner(new FileInputStream("D:\\aaa.txt"));
while (scanner.hasNextDouble()) {
for (int i = 0; i < 5; i++)
d[i] = scanner.nextDouble();
}
Arrays.sort(d);
for (int i = d.length - 1; i > 0; i--)
System.out.print(" " + d[i]);
for (int i = 0; i < d.length; i++)
rand.writeDouble(d[i]);
rand.close();
}

}



qq_21943455 2014-10-16
  • 打赏
  • 举报
回复
引用 4 楼 ohogogo 的回复:
非得用浮点数吗?可以把浮点数转换为String类型,好多都可以变通的呀。
是阿, 受教了。 新手还不够灵活。。
ps低音炮 2014-10-16
  • 打赏
  • 举报
回复
非得用浮点数吗?可以把浮点数转换为String类型,好多都可以变通的呀。
qq_21943455 2014-10-16
  • 打赏
  • 举报
回复
引用 3 楼 u011205806 的回复:
引用 2 楼 qq_21943455 的回复:
还有FileOutputStream 怎么写入浮点数??
写入浮点数就是先把浮点数转化成字符串、然后调用FileOutputStream就行了、
感谢。。。这一个问题 就能解决我的问题了
Edward_Van 2014-10-16
  • 打赏
  • 举报
回复
引用 2 楼 qq_21943455 的回复:
还有FileOutputStream 怎么写入浮点数??
写入浮点数就是先把浮点数转化成字符串、然后调用FileOutputStream就行了、
qq_21943455 2014-10-16
  • 打赏
  • 举报
回复
还有FileOutputStream 怎么写入浮点数??
qq_21943455 2014-10-16
  • 打赏
  • 举报
回复
还有有什么办法不用Scanner输出浮点数啊

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧