Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tika检测自定义metadat文件_Java_Apache Tika - Fatal编程技术网

Java Tika检测自定义metadat文件

Java Tika检测自定义metadat文件,java,apache-tika,Java,Apache Tika,我创建了一个简单的类,它使用tika库从PDF、html、XLS、DOC等文件中提取元数据 文件可以具有自定义元数据。我需要检测到这一点,并忽略第一步! 但我知道如何用蒂卡做到这一点! 这是我提取所有元数据的简单代码: import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.PrintWriter; import org.apache.tika.metadata

我创建了一个简单的类,它使用tika库从PDF、html、XLS、DOC等文件中提取元数据

文件可以具有自定义元数据。我需要检测到这一点,并忽略第一步! 但我知道如何用蒂卡做到这一点! 这是我提取所有元数据的简单代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;


public class TikaParse {
   public static String resPFldMeta = new String();
   public static String resPFldMetaValue = new String();

   @SuppressWarnings("deprecation")
   public  static String ParseFieldMetadata(String filename) throws Exception {

    int j;
     FileInputStream is = null;
     File f = new File(filename);
     is = new FileInputStream(f);

     ContentHandler contenthandler = new BodyContentHandler(-1);
     Metadata metadata = new Metadata();
     metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());

     AutoDetectParser parser = new AutoDetectParser();
     parser.parse(is, contenthandler, metadata,new ParseContext());

     String[] metadataNames = metadata.names();
     // get field name of all  metadata 
     for(j=0;j<metadataNames.length-1; j++){
         resPFldMeta += "\""+(metadataNames[j]).trim()+"\",";
     }
     resPFldMeta += "\""+(metadataNames[j]).trim()+"\"";
     return  resPFldMeta;   
 }
 //.....
}
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileWriter;
导入java.io.PrintWriter;
导入org.apache.tika.metadata.metadata;
导入org.apache.tika.parser.AutoDetectParser;
导入org.apache.tika.parser.ParseContext;
导入org.apache.tika.sax.BodyContentHandler;
导入org.xml.sax.ContentHandler;
公共类提卡帕斯酒店{
公共静态字符串resPFldMeta=新字符串();
公共静态字符串resPFldMetaValue=新字符串();
@抑制警告(“弃用”)
公共静态字符串ParseFieldMetadata(字符串文件名)引发异常{
int j;
FileInputStream为空;
文件f=新文件(文件名);
is=新文件输入流(f);
ContentHandler ContentHandler=新的BodyContentHandler(-1);
元数据=新元数据();
set(metadata.RESOURCE\u NAME\u KEY,f.getName());
AutoDetectParser=新的AutoDetectParser();
parser.parse(is,contenthandler,metadata,new ParseContext());
String[]metadataNames=metadata.names();
//获取所有元数据的字段名

对于(j=0;ji想解释更多..我需要转义自定义metadat字段,因为我有一个pdf文件,其中包含一个ModDate--文本字段的自定义属性。它类似于ModDate标准属性名!!当我在advanced metdata中删除此自定义属性并使用此pdf执行我的应用程序时,我有一个正确的元数据结果..但是如果我在不更改元数据的情况下执行我的应用程序,我会遇到由parse methode引起的错误