A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Alan 于 2013-4-24 15:08 编辑

public class Text5 {

public static void main(String[] args) throws IOException
{
  FileReader fr = new FileReader("a.txt");//文件内容ahkhsdfsadfasf
  FileWriter fw = new FileWriter("b.txt");
  char[] arr = new char[1024];  
  fr.read(arr);
  Arrays.sort(arr);System.out.print(arr);
  
  fw.write(arr);
  fr.close();
  fw.close();
  
}
//fr.read(arr);确定已经读出文件
//System.out.print(arr);没有数据   ??求指点

8 个回复

倒序浏览
  1. import java.io.FileReader;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Arrays;

  5. public class ArraysDemo {

  6.         public static void main(String[] args) throws IOException
  7.         {
  8.           FileReader fr = new FileReader("a.txt");
  9.           FileWriter fw = new FileWriter("b.txt");
  10.           char[] arr = new char[1024];  
  11.           while ((fr.read(arr)) != -1)
  12.           {
  13.                   Arrays.sort(arr);
  14.                   System.out.print(arr);
  15.           }  
  16.           fw.write(arr);
  17.           fr.close();
  18.           fw.close();
  19.           
  20.         }
  21. }
复制代码
回复 使用道具 举报
肖川 发表于 2013-4-24 13:50

楼上的说的很对;事情要一步一步的做;
没读完,就先不要排序吧;
回复 使用道具 举报
char[] arr = new char[1024];
fr.read(arr);
Arrays.sort(arr);
System.out.print(arr);
你这几行代码是要实现什么呢?在读取文件时,自定义一个数组,每次读文件读一个给定数组大小的数据,数组里面存储的是字节数据,也就是说,比如你要读取的文件里面的内容是"abc",而数组的长度是1,那么每次从文件读取了一个字节的数据,你调用Arrays.sort(arr);是把这个字节给排序了,当然会出现乱码,举个简单的例子,一个中文占两个字节,你用其中一个字节来排序,能得到一个正常的结果吗?当然不会的.在读文件的时候,对这个数组进行排序是没有意义的
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-4-24 14:56:07
报纸
楼主,给你一个思路,如果你想把一个数组写进去,起码你得遍厉一下吧,在遍厉的过程中,你遍厉一个元素然后往里面写一个。这样才有意义。你要是不明白我把代码给你贴上来,现在用手机上的,不方便
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-4-24 14:57:12
地板
楼主,给你一个思路,如果你想把一个数组写进去,起码你得遍厉一下吧,在遍厉的过程中,你遍厉一个元素然后往里面写一个。这样才有意义。你要是不明白我把代码给你贴上来,现在用手机上的,不方便
回复 使用道具 举报
Alan 中级黑马 2013-4-24 15:02:49
7#
Miss小强 发表于 2013-4-24 13:56
楼上的说的很对;事情要一步一步的做;
没读完,就先不要排序吧;

都读进数组了啊
回复 使用道具 举报
Alan 中级黑马 2013-4-24 15:07:50
8#
自己已经发现问题   程序没有问题,就是在Arrays.sort(arr);排序的时候,默认空字符也参加排序,导致生成的b。txt文件前面都是空字符,有效的字符在后面,所以没有看见
回复 使用道具 举报
本帖最后由 胡帅冰 于 2013-4-24 15:28 编辑
  1. package A;

  2. import java.io.FileReader;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.Arrays;

  6. public class Text5 {

  7. public static void main(String[] args) throws IOException
  8. {
  9.   FileReader fr = new FileReader("E:\\a.txt");//文件内容ahkhsdfsadfasf
  10.   FileWriter fw = new FileWriter("E:\\b.txt");
  11.   char[] arr = new char[10];  //read读取的数据没那么大,一般都是一个字符,没必要把数组的长度定义那么长
  12.   while (fr.read(arr)!=-1)//这是循环,用来一个一个的读取文件中的数据  因为read方法不能一次性的读取。
  13.   {
  14.          
  15.           Arrays.sort(arr);//排序
  16.           for(int i=0;i<arr.length;i++)//for循环来读取数组中的数据
  17.           {
  18.           System.out.print(arr[i]);
  19.           }
  20.           fw.write(arr);
  21.   }
  22.   fr.close();
  23.   fw.close();
  24. }
  25. }
复制代码
这个是我运行出来的,跟你要的效果是一样的。
你在读取文件数据的时候,fr.read(arr);并不能一次性全部读出,你需要一个循环来读取a文件中的数据。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马