如何使用fileInputStream从文本文件中添加数据并对从文本文件接收的数据数据进行排序

时间:2013-08-07 10:46:45

标签: java collections

我希望我应该使用文件输入流从文本文件中读取一些文本,然后使用set或get方法存储此数据。现在使用arraylist对此数据进行排序......

类SongDetail将用于设置歌曲,movieName和艺术家的值.... 有一个文本文件“text1.txt”谁有商店歌曲/ movieName /艺术家详细信息... 现在我想要当我在Class1中读取这个文件时,被重新翻译的字符串将被分成歌曲,movieName,艺术家,并且这是在songDetail类中设置的。

  import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 import java.util.*; 
  public class Class1 {

  public static void main(String[] args) {
  //ArrayList <String>list = new ArrayList<String>(); 
  ArrayList <String>list = new ArrayList<String>(); 

   try
   {
   FileInputStream in = new FileInputStream("text1.txt");
   BufferedReader br = new BufferedReader(new InputStreamReader(in));
   String strLine;

     while((strLine = br.readLine())!= null)
       {
      // System.out.println(strLine);
  list.add(strLine);

   //System.out.print(list);
     }



 System.out.print(list);

      Collections.sort(list);

      }catch(Exception e){
          System.out.println(e);
        }

    }
         }







 class SongDetail
 {
 private String song;
 private String movieName;
  private String artist;

 public SongDetail
  {
 }

   public void setSong(String song) throws InvalidSongException
        {
            this.song=song;

                    {
                    throw new InvalidSongException();
        }           }

    public void setMovieName(String movieName) 
{
this.movieName=movieName;
}


    public void setArtist(String artist) throws InvalidArtistException

        {
    this.artist=artist;

                    {
                             throw new InvalidMarkException();
                    }

                }

     public String getSong()
{
return song;
}

  public String getMovieName() 
{
return movieName;
}

   public String getArtist() 
{
return artist;

}



   }

2 个答案:

答案 0 :(得分:0)

你的问题究竟是什么?代码工作正常,但你应该在while循环之后关闭你的BufferedReader:

br.close();

您的列表不会按字母顺序打印,因为您在排序之前将其打印出来。更改以下两行应解决您的问题:

Collections.sort(list);
System.out.print(list);

答案 1 :(得分:0)

您正在排序前打印

添加System.out.print(list);在try块的最后一行