package fs;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IOReader {
private static final Logger log = LoggerFactory.getLogger(IOReader.class);
/**
* 功能:Java读取txt文件的内容 步骤:1:先获得文件句柄 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流 4:一行一行的输出。readline()。 备注:需要考虑的是异常情况
*
* @param filePath
*/
public static String readTxtFile(String filePath) {
StringBuffer fileInfo = new StringBuffer();
try {
String encoding = "UTF-8";
File file = new File(filePath);
if (file.isFile() && file.exists()) { // 判断文件是否存在
InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
fileInfo.append(lineTxt);
// System.out.println(lineTxt);
}
read.close();
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
return fileInfo.toString();
}
/**
* 在maven项目中直接获取配置文件当前path然后并读取内容
*
* @param fileName
* @return
*/
public static String getDefaultPath_ReadLine(Class c, String fileName) {
String line = "";
ClassLoader classLoader = c.getClassLoader();
URL resource = classLoader.getResource(fileName);
String path = resource.getPath();
line = readTxtFile(path);
return line;
}
/**
* 读取项目中的配置文件
*
* @param fileName
* 文件名
* @param key
* 对应参数key
* @return
*/
public static String getPropertiesKeysValue(String fileName, String key) {
String value = "";
InputStream is = IOReader.class.getClassLoader().getResourceAsStream(fileName);
// 获取文件的位置
String filePath = IOReader.class.getClassLoader().getResource(fileName).getFile();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
Properties props = new Properties();
try {
props.load(br);
value = props.getProperty(key);
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
public static void main(String[] args) {
String msg = getPropertiesKeysValue("redis.properties", "redis.host");
System.out.println(msg);
}
}