?? musicdataaccessor.java
字號:
import java.util.*;
import java.io.*;
/**
* 音樂CD數(shù)據(jù)讀取的實現(xiàn)類
*
*/
public class MusicDataAccessor extends DataAccessor {
//////////////////////////////////////////////////////
//
// 文件格式如下
// 歌手姓名, 唱片名, 類別, 圖片名, 歌曲數(shù)目
// 歌曲 #1, 總秒數(shù)
// 歌曲 #2, 總秒數(shù)
// ----------------------------
//
///////////////////////////////////////////////////////
/**
* 數(shù)據(jù)文件名
*/
protected static final String FILE_NAME = "music.db";
/**
* 紀錄的分割符
*/
protected static final String RECORD_SEPARATOR = "----------";
/**
* 默認構造方法
*
*/
public MusicDataAccessor() {
load();
}
/**
* 讀取數(shù)據(jù)的方法
*/
public void load() {
dataTable = new HashMap();
ArrayList musicArrayList = null;
StringTokenizer st = null;
MusicRecording myRecording;
String line = "";
String artist, title;
String category, imageName;
int numberOfTracks;
int basePrice;
double price;
Track[] trackList;
try
{
log("讀取文件: " + FILE_NAME + "...");
BufferedReader inputFromFile = new BufferedReader(new FileReader(FILE_NAME));
while ( (line = inputFromFile.readLine()) != null ) {
st = new StringTokenizer(line, ",");
artist = st.nextToken().trim();
title = st.nextToken().trim();
category = st.nextToken().trim();
imageName = st.nextToken().trim();
numberOfTracks = Integer.parseInt(st.nextToken().trim());
trackList = readTracks(inputFromFile, numberOfTracks);
basePrice = 9 + (int) (Math.random() * 7);
price = basePrice + .99;
myRecording = new MusicRecording(artist, trackList, title,
price, category, imageName);
if (dataTable.containsKey(category)) {
musicArrayList = (ArrayList) dataTable.get(category);
}
else {
musicArrayList = new ArrayList();
dataTable.put(category, musicArrayList);
}
musicArrayList.add(myRecording);
line = inputFromFile.readLine();
}
inputFromFile.close();
log("文件讀取結(jié)束!");
log("準備就緒!\n");
}
catch (FileNotFoundException exc) {
log("沒有找到文件 \"" + FILE_NAME + "\".");
log(exc);
}
catch (IOException exc) {
log("發(fā)生異常: " + FILE_NAME);
log(exc);
}
}
/**
* 獲得歌曲集合的幫助方法
*
* @param inputFromFile 文件名
* @param numberOfTracks the 歌曲數(shù)目
*
*/
protected Track[] readTracks(BufferedReader inputFromFile, int numberOfTracks)
throws IOException
{
Track[] trackList = new Track[numberOfTracks];
StringTokenizer st;
String trackLine;
String trackName;
Duration trackDuration;
int totalSeconds;
for (int i=0; i < numberOfTracks; i++)
{
trackLine = inputFromFile.readLine();
st = new StringTokenizer(trackLine, ",");
trackName = st.nextToken().trim();
totalSeconds = Integer.parseInt(st.nextToken().trim());
trackDuration = new Duration(totalSeconds);
trackList[i] = new Track(trackName, trackDuration);
}
return trackList;
}
/**
* 保存數(shù)據(jù)
*/
public void save() {
}
/**
* 日志方法.
*/
protected void log(Object msg) {
System.out.println("MusicDataAccessor類: " + msg);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -