package auxiliaryProgram;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ReadFile {
public ReadFile() {
}
//连接数据库
public static void connectSql()
{
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载驱动程序
String url = "jdbc:sqlserver://localhost;integratedSecurity=true;DatabaseName=CommendSystemOfMedicine";//设置数据库连接串
String user = null ;//数据库登录用户名
String password = null ;//数据库登录密码
String sqlString;
try {
Class.forName(driverName);
Connection conn=DriverManager.getConnection(url, user, password);
sqlString="insert into Instructions(drugName) values(3)";
Statement stat=conn.createStatement( );
stat.executeUpdate(sqlString);//向表中插入一行数据
System.out.println("数据库连接正常"+sqlString);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//处理文件,按说明书每一项细分字符串
public static void cutString(String allString) {
String[] instruction={"\\[药品名称\\]","通用名称:","汉语拼音:","\\[成份\\]","\\[性状\\]","\\[功能主治\\]","\\[规格\\]",
"\\[用法用量\\]","\\[不良反应\\]","\\[禁忌\\]","\\[注意事项\\]","\\[药物相互作用\\]","\\[贮藏\\]",
"\\[包装\\]","\\[有效期\\]","\\[执行标准\\]","\\[批准文号\\]","\\[说明书修订日期\\]","\\[生产企业\\]"};
//"\\"表示转义字符
String[] instructionDetail={"","","","","","","","","","","","","","","","","","",""};
String restString=allString;
String[] tempString;
for(int i=0;i<instruction.length;i++)
{
tempString=restString.split(instruction[i]);//按内容分掉说明书中的每一项
if(i>0)
{
instructionDetail[i-1]=tempString[0];
}
restString=tempString[1];
}
instructionDetail[instruction.length-1]=restString;
for(int i=0;i<instruction.length;i++)
{
//b=b.replace("b","");
instruction[i]=instruction[i].replace("\\", "");
instruction[i]=instruction[i].replace("[", "");
instruction[i]=instruction[i].replace("]", "");
instruction[i]=instruction[i].replace("]", "");
instruction[i]=instruction[i].replace(":", "");
if(instructionDetail[i].equals(""))
{
//instructionDetail[i]="这是空的";
}
System.out.println(instruction[i]+":"+instructionDetail[i]);
}
}
//按字符读取文件
public static String readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
String allString="";
String tempString,tempString1;
try {
// System.out.println("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char) tempchar) != '\r') {
//System.out.print((char) tempchar);
tempString=String.valueOf((char)tempchar);
tempString1=allString.concat(tempString);
allString=tempString1;
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
// System.out.println("打印了allstring:"+allString);
return allString;
}
/**
* 读取某个文件夹下的所有文件
*/
public static boolean readfile(String filepath) throws FileNotFoundException, IOException {
try {
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("无文件或只有一个文件");
/*
System.out.println("path=" + file.getPath());
System.out.println("absolutepath=" + file.getAbsolutePath());
System.out.println("name=" + file.getName());
*/
} else if (file.isDirectory()) {
System.out.println("读取文件成功");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
String fileName = filepath + "\\" + filelist[i];
String allString=readFileByChars(fileName);
if (!readfile.isDirectory()) {
/*
System.out.println("path=" + readfile.getPath());
System.out.println("absolutepath="+ readfile.getAbsolutePath());
System.out.println("name=" + readfile.getName());
*/
} else if (readfile.isDirectory()) {
readfile(filepath + "\\" + filelist[i]);
}
//System.out.println(allString);//每一个文件内容都传过来了
cutString(allString);
}
}
} catch (FileNotFoundException e) {
System.out.println("readfile() Exception:" + e.getMessage());
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
readfile("C:/Users/wzj/Desktop/毕业设计相关/药品知识库相关/yaozh/text");//测试路径
//readfile("C:/Users/wzj/Desktop/毕业设计相关/药品知识库相关/yaozh/InstructsOne"); //真实数据路径文件夹1(一共5个文件夹!!)
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}
connectSql();
System.out.println("ok");
}
}