在java中使用stringtokenizer显示文件中的选定内容
任何人都可以建议,如何在java中使用字符串标记来读取文件中的所有数据,并仅显示其部分内容。比如,如果我有在java中使用stringtokenizer显示文件中的选定内容,java,file-io,java-io,stringtokenizer,Java,File Io,Java Io,Stringtokenizer,任何人都可以建议,如何在java中使用字符串标记来读取文件中的所有数据,并仅显示其部分内容。比如,如果我有 apple = 23456, mango = 12345, orange= 76548, guava = 56734 我需要选择apple,输出中应该显示apple对应的值 这是密码 import java.io.BufferedReader; import java.io.FileReader; import java.util.StringTokenizer; public cla
apple = 23456, mango = 12345, orange= 76548, guava = 56734
我需要选择apple,输出中应该显示apple对应的值
这是密码
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
public class ReadFile {
public static void main(String[] args) {
try {
String csvFile = "Data.txt";
//create BufferedReader to read csv file
BufferedReader br = new BufferedReader(new FileReader(csvFile));
String line = "";
StringTokenizer st = null;
int lineNumber = 0;
int tokenNumber = 0;
//read comma separated file line by line
while ((line = br.readLine()) != null) {
lineNumber++;
//use comma as token separator
st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
tokenNumber++;
//display csv values
System.out.print(st.nextToken() + " ");
}
System.out.println();
//reset token number
tokenNumber = 0;
}
} catch (Exception e) {
System.err.println("CSV file cannot be read : " + e);
}
}
}
这是我正在处理的文件:
ImageFormat=GeoTIFF
ProcessingLevel=GEO
ResampCode=CC
NoScans=10496
NoPixels=10944
MapProjection=UTM
Ellipsoid=WGS_84
Datum=WGS_84
MapOriginLat=0.00000000
MapOriginLon=0.00000000
ProdULLat=18.54590200
ProdULLon=73.80059300
ProdURLat=18.54653200
ProdURLon=73.90427600
ProdLRLat=18.45168500
ProdLRLon=73.90487900
ProdLLLat=18.45105900
ProdLLLon=73.80125300
ProdULMapX=373416.66169100
ProdULMapY=2051005.23286800
ProdURMapX=384360.66169100
ProdURMapY=2051005.23286800
ProdLRMapX=373416.66169100
ProdLRMapY=2040509.23286800
ProdLLMapX=384360.66169100
ProdLLMapY=2040509.23286800
除此之外,我只需要显示以下内容:
诺斯坎人
诺皮克斯
普罗杜拉特
普罗杜隆
生产线
prodlron使用bufferedreader读取完整的行,并将其传递给stringtokenizer,标记器为“=”[如您在文件中所述] 有关更多信息,请粘贴您的文件和您迄今为止尝试的内容
ArrayList<String> list = new ArrayList<String>();
list.add("NoScans");
list.add("NoPixels");
list.add("ProdULLat");
list.add("ProdULLon");
list.add("ProdLRLat");
list.add("ProdLRLon");
//read a line from a file.
while ((line = br.readLine()) != null) {
lineNumber++;
//use 'equal to' as token separator
st = new StringTokenizer(line, "=");
//check for tokens from the above string tokenizer.
while (st.hasMoreTokens()) {
String key = st.nextToken(); //this will give the first token eg: NoScans
String value = st.nextToken(); //this will give the second token eg:10496
//check the value is present in the list or not. If it is present then print
//the value else leave it as it is.
if(list.contains(key){
//display csv values
System.out.print(key+"="+ " "+value);
}
}
ArrayList list=new ArrayList();
列表。添加(“NoScans”);
列表。添加(“无像素”);
列表。添加(“ProdULLat”);
列表。添加(“ProdULLon”);
列表。添加(“ProdLRLat”);
列表。添加(“产品”);
//从文件中读取一行。
而((line=br.readLine())!=null){
lineNumber++;
//使用“等于”作为标记分隔符
st=新的StringTokenizer(行“=”);
//检查来自上述字符串标记器的标记。
而(st.hasMoreTokens()){
String key=st.nextToken();//这将给出第一个标记,例如:NoScans
String value=st.nextToken();//这将给出第二个标记,例如:10496
//检查列表中是否存在该值。如果存在,则打印
//其他值保持原样。
if(list.contains)(键){
//显示csv值
系统输出打印(键+“=”+“+”+值);
}
}
我编写了代码,假设您已经将文件中的数据存储到字符串中
public static void main(String[] args) {
try {
String[] CONSTANTS = {"apple", "guava"};
String input = "apple = 23456, mango = 12345, orange= 76548, guava = 56734";
String[] token = input.split(",");
for(String eachToken : token) {
String[] subToken = eachToken.split("=");
// checking whether this data is required or not.
if(subToken[0].trim().equals(CONSTANTS[0]) || subToken[0].trim().equals(CONSTANTS[1])) {
System.out.println("No Need to do anything");
} else {
System.out.println(subToken[0] + " " + subToken[1]);
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
“我注意到您已经编辑了问题并添加了代码。对于新版本的问题,您仍然可以在读取文件中的字符串时调用方法并获得所需的值!”
看起来你真的在要求我们为你做工作。阅读文档:到目前为止你做了什么?如果你尝试了一些东西,遇到了一个让你困惑的错误,请发布!我们很乐意提供帮助:)请不要重复你的问题。这与你的另一个问题不一样吗?到目前为止,我可以读取文件的内容,使用stringtokenizer显示它。但我正在解决如何从文件中选择单个元素的问题。我已经发布了代码。我可以读取并显示文件的内容……但无法理解如何执行上面提到的是你粘贴的那一个吗?你遇到了什么错误和困难?我需要读取整个文件,只显示其中的一部分。不是所有的数据。请提供一个示例文件。添加项目[NoScans NoPixels ProdULLat ProdULLat ProdULLat ProdULLat ProdULLat Prodlron]在列表中。将该行传递给字符串标记器并检查列表中是否存在第一个标记。while((line=br.readLine())!=null){//使用逗号作为标记分隔符st=new StringTokenizer(line,“=”);while(st.hasMoreTokens()){string key=st.nextToken();string value=st.nextToken();if(list.contains(key){//tokenNumber++;//显示csv值System.out.print(st.nextToken()+“”);}除了将数据复制到输入文件中,还有其他方法将数据从文件存储到字符串吗?因为,我的文件非常大。只需分块执行。永远不要从文件中读取整个数据。我们可以逐行读取整个文件,并使用if条件显示值吗?是的,我们应该这样做。而不是读取整个文件。请参阅了解更多详细信息。这很有帮助。但是,如何仅选择和显示整个文件的一部分??
public class Test {
public String getValue(String str, String strDelim, String keyValueDelim, String key){
StringTokenizer tokens = new StringTokenizer(str, strDelim);
String sentence;
while(tokens.hasMoreElements()){
sentence = tokens.nextToken();
if(sentence.contains(key)){
return sentence.split(keyValueDelim)[1];
}
}
return null;
}
public static void main(String[] args) {
System.out.println(new Test().getValue("apple = 23456, mango = 12345, orange= 76548, guava = 56734", ",", "=", "apple"));
}
}