私はアンドロイド開発の初心者ですが、パイプラインで区切られたテキストファイルを解析できる方法があるかどうかを知りたいだけですか?
ありがとう、
ファイルを文字列に読み取り、パイプラインまたはその他の区切り文字を使用して文字列を分割するだけです。
テキストファイルの内容を読みたいと思い、データ全体をパイプラインに基づいて区切られた文字列のチャンクに入れたいですか? 私が正しければ、次のコードが役に立ちます:
public class FileReader {
private String fileType;
FileReader (String targetFilePath){
File file = new File(targetFilePath);
if (!file.exists()) {
Log.e("",targetFilePath + " does not exist.");
} else if (!(file.isFile() && file.canRead())) {
Log.e("",file.getName() + " cannot be read from.");
} else {
try {
fileInputStream = new FileInputStream(file);
fileBufferedInputStream = new BufferedInputStream(fileInputStream);
//Use FileBufferedInputStream just for supporting mark()/reset() while reading
// reading file extension ex. java or xml or txt
this.fileType = targetFilePath.substring(
targetFilePath.lastIndexOf('.') + 1,
targetFilePath.length());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.e("",""+e.printStackTrace());
}
}
}
/*
This method will return a arraylist of Strings which are seperated by '|' in given txt file
and null otherwise like if file was not text,blank.etc
*/
public ArrayList<String> read(){
if(fileType.equalsIgnoreCase("txt")){
char currentChar;
ArrayList<String> myStringsList ;
while (fileBufferedInputStream.available() > 0) {
StringBuilder stringBuilder = new StringBuilder();
while ((currentChar = (char) fileBufferedInputStream.read()) == '|') {
stringBuilder.append(current);
}
if(null == myStringsList){
myStringsList = new ArrayList<String>();
}
myStrings.add(stringBuilder.toString());
}
}
fileBufferedInputStream.close();
return myStringsList ;
}
}
上記のコードを次のように呼び出します。
FileReader fileReader = new FileReader("Path to your text file");
ArrayList<String> stringsSeperatedByPipeDelimeters = fileReader.read();
あなたもこのようなことをすることができます:
private String[] getPipedChunks(String targetFilePath){
File file = new File(targetFilePath);
try {
fileInputStream = new FileInputStream(file);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.e("",""+e.printStackTrace());
}
StringBuilder sb;
while(fileInputStream.available() > 0) {
if(null== sb) sb = new StringBuilder();
sb.append((char)fileInputStream.read());
}
String stringArray [];
if(null!=sb){
stringArray = sb.toString.split('|');
// This is your String Array.
}
try {
fileInputStream.close();
}
catch(Exception e){
// TODO Auto-generated catch block
Log.e("",""+e.printStackTrace());
}
return stringArray;
}