我想使用以下代码阅读文件内容:
String content = new String(Files.readAllBytes(Paths.get("/sys/devices/virtual/dmi/id/chassis_serial")));
在某些系统上,此文件不存在或为空。我怎么抓住这个例外?我想在没有文件且没有值的情况下打印消息“No file”。
答案 0 :(得分:2)
只有在使用新文件API 时才能抛出AccessDeniedException
。使用inputStream
打开源文件中的流,以便捕获该异常。
尝试使用此代码:
try
{
final InputStream in = new Files.newInputStream(Path.get("/sys/devices/virtual/dmi/id/chassis_serial"));
} catch (FileNotFoundException ex) {
System.out.print("File not found");
} catch(AccessDeniedException e) {
System.out.print("File access denied");
}
答案 1 :(得分:0)
尝试使用过滤器file.canRead())
来避免任何访问异常。
答案 2 :(得分:-1)
创建一个File
对象并检查它是否存在。
如果确实如此,那么将该文件转换为字节数组是安全的,并检查大小是否大于0.如果它将其转换为字符串。我在下面添加了一些示例代码。
File myFile = new File("/sys/devices/virtual/dmi/id/chassis_serial");
byte[] fileBytes;
String content = "";
if(myFile.exists()) {
fileBytes = File.readAllBytes(myfile.toPath);
if(fileBytes.length > 0) content = new String(fileBytes);
else System.out.println("No file");
else System.out.println("No file");
我知道这不是你要找的那个班轮。另一种选择就是
try {
String content = new String(Files.readAllBytes(Paths.get("/sys/devices/virtual/dmi/id/chassis_serial")));
} catch(Exception e) {
System.out.print("No file exists");
}