这是我用于读取mime类型的类。我正在尝试添加一个新的mime类型(属性文件)并读取它。
这是我的类文件:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package check_mime;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.tika.Tika;
import org.apache.tika.mime.MimeTypes;
public class TikaFileTypeDetector {
private final Tika tika = new Tika();
public TikaFileTypeDetector() {
super();
}
public String probeContentType(Path path) throws IOException {
// Check contents first
String fileContentDetect = tika.detect(path.toFile());
if (!fileContentDetect.equals(MimeTypes.OCTET_STREAM)) {
return fileContentDetect;
}
// Try file name only if content search was not successful
String fileNameDetect = tika.detect(path.toString());
if (!fileNameDetect.equals(MimeTypes.OCTET_STREAM)) {
return fileNameDetect;
}
return null;
}
public static void main(String[] args) throws IOException {
Tika tika = new Tika();
if (args.length != 1) {
printUsage();
return;
}
Path path = Paths.get(args[0]);
TikaFileTypeDetector detector = new TikaFileTypeDetector();
String contentType = detector.probeContentType(path);
System.out.println("File is of type - " + contentType);
}
public static void printUsage() {
System.out.print("Usage: java -classpath ... "
+ TikaFileTypeDetector.class.getName()
+ " ");
}
}
从这些文档中,我创建了一个自定义xml:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
<mime-type type="text/properties">
<glob pattern="*.properties"/>
</mime-type>
</mime-info>
现在我如何添加到我的程序并阅读它。我必须创建一个解析器吗?我被困在这里了。
Tika将通过Java资源加载检测您的自定义定义,并自动将其添加到自己的定义中:为此,您需要将其命名custom-mimetypes.xml并将其放入代码库中的包org.apache.tika.mime。
如果从类创建jar文件,还需要在jar中包含custom-mimetypes.xml。
在您的资源文件夹中,添加包org\apache\tika\mime,并创建文件自定义mimetypes。xml。
把下面的代码
<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
<mime-type type="custom-mime-type">
<glob pattern="*.custom-extension"/>
</mime-type>
</mime-info>
用mime类型替换自定义mime类型,用扩展名替换自定义扩展名。请检查下面的目录结构。
顺便说一句,您也可以通过下载该文件并放在custom-mimetypes.xml
旁边来本地加载tike mime类型。这仅在您需要更改标准tike mime类型时有用。要记住的一点是,您不能在两个xml中拥有相同的mime类型/扩展名。
Apache Tika 5分钟解析器说明中介绍了这一点。添加对Java的支持。属性文件,您应该首先创建一个名为自定义mimetypes的文件。xml,并用如下内容填充它:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info>
<mime-type type="text/properties">
<_comment>Java Properties</_comment>
<glob pattern="*.properties"/>
<sub-class-of type="text/plain"/>
</mime-type>
</mime-info>
接下来,你需要把它放在蒂卡可以找到的地方,用正确的名字。它必须html" target="_blank">存储为org/apache/tika/mime/custom mimetypes。类路径上的xml。最简单的方法是创建目录结构,移动新文件,然后将根目录添加到类路径中。对于部署,您应该将其包装到一个jar中,并将其放在类路径上
如果小心的话,可以使用Tika应用程序检查mime类型文件是否已加载。将代码打包为jar,将其作为如下方式运行:
java -classpath tika-app-1.10-SNAPSHOT.jar:my-custom-mimetypes.jar org.apache.tika.cli.TikaCLI --list-supported-types | grep text/properties
或者,如果您在本地目录中有它,请尝试以下操作
ls -l org/apache/tika/mime/custom-mimetypes.xml
# Check a file was found, with some content in it
java -classpath tika-app-1.10-SNAPSHOT.jar:. org.apache.tika.cli.TikaCLI --list-supported-types | grep text/properties
如果没有显示mime类型,则路径或文件名不正确,请仔细检查
(或者,升级到Apache Tika的更新版本,因为r1686315 Tika内置了Java属性mimetype!)
问题内容: 我有办法 在内部,我想调用另一个方法并将其传递,但是我想向其他对象添加新元素(描述)。 如何在Java中做到这一点?代码是什么样的? 问题答案: 只是一个数组。因此: 您可能需要弄混的通用类型。 您可以更快但更冗长:
问题内容: 我正在尝试向Kettle添加新的数据类型(几何)。我在org.pentaho.di.compatibility中添加了一个新的Value类型。我添加了ValueGeometry类,并对ValueInterface和Value进行了必要的修改。代码会编译,但是新数据类型不会显示在Select之类的插件中。我在这里想念什么?如果您能指出这些插件的源代码,我也将不胜感激。 谢谢。 问题答案:
问题内容: 我想在Route和Router类型上添加一个便捷的util方法: 但是编译器告诉我 无法在非本地类型mux.Router上定义新方法 那么我将如何实现呢?是否创建具有匿名mux.Route和mux.Router字段的新结构类型?或者是其他东西? 问题答案: 正如编译器所提到的,您不能在另一个包中扩展现有类型。您可以定义自己的别名或子包,如下所示: 或嵌入原始路由器:
注意:“else”语句只是出于测试目的,似乎表明if语句没有正常工作,因为当我测试时,它总是被触发。
问题内容: 如何在netbeans项目的类路径中添加文件夹(例如,包含arts的资源文件夹)?我设法通过编辑项目的NB生成的jar文件(即其MANIFEST.MF文件+手动复制资源)来手动完成此操作,但是应该有一种方法可以告诉netbeans并注意资源,不是吗? 文件夹结构如下所示: 我不想将艺术品包装到罐子里,因为我希望艺术品可以轻松更换。如果我将art文件夹添加到src文件夹,则NB可以正常编
我有几个CSV文件如下所示: 我想添加一个新的列到所有的CSV文件,使它看起来像这样: 到目前为止,我的剧本是: (Python 3.2) 但在输出中,脚本跳过每一行,新列中只有Berry: