Java MapByteBuffer是否比BufferReader快?
我试图从文本文件中提取特定数据。我使用bufferreader逐行读取文件,以便可以处理该行 下面是我编写的代码:Java MapByteBuffer是否比BufferReader快?,java,Java,我试图从文本文件中提取特定数据。我使用bufferreader逐行读取文件,以便可以处理该行 下面是我编写的代码: File CAD = new File (filename); try (FileReader fileReader = new FileReader(CAD)) { String bn = CAD.getName(); String[] bn2 = bn.split("\\."); BOARD_NAME= bn2
File CAD = new File (filename);
try (FileReader fileReader = new FileReader(CAD))
{
String bn = CAD.getName();
String[] bn2 = bn.split("\\.");
BOARD_NAME= bn2[0];
StringBuilder PACKAGE = new StringBuilder(),
GRAPHIC = new StringBuilder(),
PADS_DIA = new StringBuilder(),
PADS = new StringBuilder(),
COMPONENTS = new StringBuilder();
try (BufferedReader bufferedReader = new BufferedReader(fileReader))
{
String line;
while ((line = bufferedReader.readLine()) != null)
{
if (line.startsWith("J!"))
{
String[] units = line.split("!");
UNITS = units[8];
}
else if (line.startsWith("A!REFDES!COMP_CLASS!"))
{
while (!"A!NET_NAME!REFDES!PIN_NUMBER!PIN_NAME!PIN_GROUND!PIN_POWER!".equals(line = bufferedReader.readLine()))
{
if (line.startsWith("S!"))
{
String[] data = line.split("!");
COMPONENTS.append(data[1])
.append("!")
.append(data[8])
.append("!")
.append(data[10])
.append("!")
.append(data[11])
.append("!")
.append(data[12])
.append("\n");
}
}
}
else if (line.startsWith("A!PAD_NAME"))
{
do
{
if (line.startsWith("S!") && line.contains("00001"))
{
String[] data = line.split("!");
if ("CIRCLE".equals(data[6]))
{
PADS.append(data[1])
.append("!C!")
.append(data[7])
.append("!")
.append(data[8])
.append("!TOP")
.append("\n");
}
else if (data[6].equals(""))
{
PADS.append(data[1])
.append("!0!")
.append(data[7])
.append("!")
.append(data[8])
.append("!TOP")
.append("\n");
}
else
{
PADS.append(data[1])
.append("!R!")
.append(data[7])
.append("!")
.append(data[8])
.append("!TOP")
.append("\n");
}
}
else if (line.startsWith("S!") && line.contains("BOTTOM"))
{
String[] data = line.split("!");
if ("CIRCLE".equals(data[6]))
{
PADS.append(data[1])
.append("!C!")
.append(data[7])
.append("!")
.append(data[8])
.append("!BOTTOM")
.append("\n");
}
else if (data[6].equals(""))
{
PADS.append(data[1])
.append("!0!")
.append(data[7])
.append("!")
.append(data[8])
.append("!BOTTOM")
.append("\n");
}
else
{
PADS.append(data[1])
.append("!R!")
.append(data[7])
.append("!")
.append(data[8])
.append("!BOTTOM")
.append("\n");
}
}
else if (line.startsWith("S!") && line.contains("~DRILL"))
{
String[] data = line.split("!");
PADS_DIA.append(data[1])
.append("!")
.append(data[6])
.append("\n");
}
}while (!"A!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!GRAPHIC_DATA_2!GRAPHIC_DATA_3!GRAPHIC_DATA_4!GRAPHIC_DATA_5!GRAPHIC_DATA_6!GRAPHIC_DATA_7!GRAPHIC_DATA_8!GRAPHIC_DATA_9!SUBCLASS!SYM_NAME!REFDES!".equals(line = bufferedReader.readLine()));
}
if (line.startsWith("A!SYM_NAME!"))
{
int k =0,j=0;
String[] data1 = line.split("!");
for (int i =0; i<data1.length;i++)
{
if (data1[i].equals("PIN_NUMBER"))
{
k=i;
}
else if (data1[i].equals("PIN_ROTATION"))
{
j=i;
}
}
while(!"A!VIA_X!VIA_Y!PAD_STACK_NAME!NET_NAME!TEST_POINT!".equals(line = bufferedReader.readLine()))
{
if (line.startsWith("S!"))
{
String[] data = line.split("!");
if (data[8].equals("")||data[8]==null)
{}
else
{
PACKAGE.append(data[1])
.append("!")
.append(data[k])
.append("!")
.append(data[k+1])
.append("!")
.append(data[k+2])
.append("!")
.append(data[k+3])
.append("!")
.append(data[k+4])
.append("!")
.append(data[j])
.append("\n");
}
}
}
}
else if (line.startsWith("A!CLASS!SUBCLASS!GRAPHIC_DATA_NAME!"))
{
while (!"A!SUBCLASS!PAD_SHAPE_NAME!GRAPHIC_DATA_NAME!GRAPHIC_DATA_NUMBER!RECORD_TAG!GRAPHIC_DATA_1!GRAPHIC_DATA_2!GRAPHIC_DATA_3!GRAPHIC_DATA_4!GRAPHIC_DATA_5!GRAPHIC_DATA_6!GRAPHIC_DATA_7!GRAPHIC_DATA_8!GRAPHIC_DATA_9!PAD_STACK_NAME!REFDES!PIN_NUMBER!".equals(line = bufferedReader.readLine()))
{
if (line.startsWith("S!BOARD GEOMETRY!OUTLINE"))
{
//to find the diamension x and y of board
String data[]=line.split("!");
double valuex = Double.parseDouble(data[6]);
double valuey = Double.parseDouble(data[7]);
PANEL_X.add(valuex);
PANEL_Y.add(valuey);
}
else if (line.startsWith("S!REF DES"))
{
String data[] = line.split("!");
if (data[2].equals("ASSEMBLY_TOP")||data[2].equals("DISPLAY_TOP"))
{
GRAPHIC.append(data[12])
.append("!")
.append("TOP")
.append("\n");
}
else if(data[2].equals("ASSEMBLY_BOTTOM")||data[2].equals("DISPLAY_BOTTOM"))
{
GRAPHIC.append(data[12])
.append("!")
.append("BOTTOM")
.append("\n");
}
}
}
double max_x = max(PANEL_X);
double min_x = min(PANEL_X);
double max_y = max(PANEL_Y);
double min_y = min(PANEL_Y);
double diamensionx = max_x - min_x;
double diamensiony = max_y - min_y;
MIN_X = min_x;
MIN_Y = min_y;
BOARD_X = diamensionx;
BOARD_Y = diamensiony;
BOARD_Z = 62.9921;
}
ArrayList<String> $TEMP_LIST = new ArrayList<>(asList(GRAPHIC.toString().split("\n")));
HashSet<String> graphic = new HashSet<>($TEMP_LIST);
GRAPHIC_LIST = new ArrayList<>(graphic);
PACKAGE_LIST = new ArrayList<>(asList(PACKAGE.toString().split("\n")));
PADS_LIST = new ArrayList<>(asList(PADS.toString().split("\n")));
PADS_DIA_LIST = new ArrayList<>(asList(PADS_DIA.toString().split("\n")));
COMPONENTS_LIST = new ArrayList<>(asList(COMPONENTS.toString().split("\n")));
}
}
fileReader.close();
}
文件CAD=新文件(文件名);
try(FileReader FileReader=newfilereader(CAD))
{
字符串bn=CAD.getName();
字符串[]bn2=bn.split(\\);
董事会名称=bn2[0];
StringBuilder包=新的StringBuilder(),
GRAPHIC=新的StringBuilder(),
焊盘直径=新的StringBuilder(),
PADS=新的StringBuilder(),
COMPONENTS=新的StringBuilder();
try(BufferedReader BufferedReader=新的BufferedReader(文件阅读器))
{
弦线;
而((line=bufferedReader.readLine())!=null)
{
if(line.startsWith(“J!”)
{
字符串[]单位=行。拆分(!”;
单位=单位[8];
}
else if(line.startsWith(“A!REFDES!COMP_CLASS!”)
{
而(!“A!NET_NAME!REFDES!PIN_NUMBER!PIN_NAME!PIN_GROUND!PIN_POWER!”。等于(line=bufferedReader.readLine())
{
if(line.startsWith(“S!”)
{
String[]data=line.split(“!”);
COMPONENTS.append(数据[1])
.append(“!”)
.append(数据[8])
.append(“!”)
.append(数据[10])
.append(“!”)
.append(数据[11])
.append(“!”)
.append(数据[12])
.append(“\n”);
}
}
}
else if(line.startsWith(“A!PAD_NAME”))
{
做
{
if(line.startsWith(“S!”)&line.contains(“00001”))
{
String[]data=line.split(“!”);
如果(“圆”。等于(数据[6]))
{
PADS.append(数据[1])
.append(“!C!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!TOP”)
.append(“\n”);
}
else if(数据[6]。等于(“”)
{
PADS.append(数据[1])
.append(“!0!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!TOP”)
.append(“\n”);
}
其他的
{
PADS.append(数据[1])
.append(“!R!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!TOP”)
.append(“\n”);
}
}
else if(line.startsWith(“S!”)&line.contains(“底部”))
{
String[]data=line.split(“!”);
如果(“圆”。等于(数据[6]))
{
PADS.append(数据[1])
.append(“!C!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!BOTTOM”)
.append(“\n”);
}
else if(数据[6]。等于(“”)
{
PADS.append(数据[1])
.append(“!0!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!BOTTOM”)
.append(“\n”);
}
其他的
{
PADS.append(数据[1])
.append(“!R!”)
.append(数据[7])
.append(“!”)
.append(数据[8])
.append(“!BOTTOM”)
.append(“\n”);
}
}
else if(line.startsWith(“S!”)&&line.contains(“~DRILL”))
{
String[]data=line.split(“!”);
焊盘直径附加(数据[1])
.append(“!”)
.append(数据[6])
.append(“\n”);
}
}while(!“A!图形数据名称!图形数据编号!记录标签!图形数据1!图形数据2!图形数据3!图形数据4!图形数据6!图形数据7!图形数据8!图形数据9!子类!符号名称!REFDES!”。等于(line=bufferedReader.readLine());
}
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
Pattern pattern = Pattern.compile("!");
Pattern patternNL = Pattern.compile("\n");
String[] parts = pattern.split(line);
String[] singleLines = patternNL.split(lines);