I know this is a general question, and I went through a lot of forums to find out what the problem is in my code.
I need to read a text file with several blocks in the following format:
import com.myCompanyExample.gui.Layout
@Layout
LayoutModel currentState() {
MyBuilder builder = new MyBuilder()
form example
title form{
row_1
row_1
row_n
}
return build.get()
}
@Layout
LayoutModel otherState() {
....
....
return build.get()
}
I have this code to read the entire file, and I would like to extract each block between the keyword "@Layout" and the keyword "return". I also need to catch the whole new line, so later I can split each matching block into a list
private void myReadFile(File fileLayout){
String line = null;
StringBuilder allText = new StringBuilder();
try{
FileReader fileReader = new FileReader(fileLayout);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) != null) {
allText.append(line)
}
bufferedReader.close();
}
catch(FileNotFoundException ex) {
System.out.println("Unable to open file");
}
catch(IOException ex) {
System.out.println("Error reading file");
}
Pattern pattern = Pattern.compile("(?s)@Layout.*?return",Pattern.DOTALL);
Matcher matcher = pattern.matcher(allText);
while(matcher.find()){
String [] layoutBlock = (matcher.group()).split("\\r?\\n")
for(index in layoutBlock){
}
}
layoutBlock returns size = 1
source
share