我正在编写Java应用程序(FUSE文件系统)。此应用程序从文件系统读取不同文件类型的文件,如文本,图像,PDF,音频和视频文件..等等。
在文件读取方法中,我编码为:
public int read(final String path, final ByteBuffer buffer, final long size, final long offset, final FileInfoWrapper info)
{
String contentOfFile=null;
try {
contentOfFile= readFile(mirroredFolder+path);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final String s = contentOfFile.substring((int) offset,
(int) Math.max(offset, Math.min(contentOfFile.length() - offset, offset + size)));
buffer.put(s.getBytes());
return s.getBytes().length;
}
但它没有正确读取所有文件类型。请参阅下面的图片,其中显示了打开文件时创建的错误消息。
error in reading http://i61.tinypic.com/290roe1.png
如图所示,代码只能正确读取一种类型的文件文件,其余文件会弹出错误消息。
有人可以修改我的代码,以便它可以普遍读取所有类型的文件。
- 后来添加 -
(保险丝日志)堆栈跟踪
Jun 18, 2014 11:13:36 AM org.organization.upesh.FirstMaven.SFS_360 getattr
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: 0
Jun 18, 2014 11:13:38 AM org.organization.upesh.FirstMaven.SFS_360 open
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: 0
Jun 18, 2014 11:13:38 AM org.organization.upesh.FirstMaven.SFS_360 read
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: 0
Jun 18, 2014 11:13:38 AM org.organization.upesh.FirstMaven.SFS_360 flush
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: 0
Jun 18, 2014 11:13:38 AM org.organization.upesh.FirstMaven.SFS_360 lock
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: -38
release called: Path=/Untitled Folder/picture.png
Jun 18, 2014 11:13:38 AM org.organization.upesh.FirstMaven.SFS_360 release
INFO: [/Untitled Folder/picture.png] Method succeeded. Result: 0
程序不会抛出任何错误。但它的应用程序界面(即pdf阅读器,libre办公室阅读器,图片查看器等)在读取文件时会出现错误信息,因为我的自定义fuse文件系统以错误的方式读取文件。