Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 如何在groovy中正确读取xml文件_Java_Groovy_Apache Nifi - Fatal编程技术网

Java 如何在groovy中正确读取xml文件

Java 如何在groovy中正确读取xml文件,java,groovy,apache-nifi,Java,Groovy,Apache Nifi,我想读取config.xml文件,但多个处理器可以同时使用此文件,为了防止此操作,我需要使用fileLock,我使用此代码读取xml,但格式不正确,如下所示 如何以正确的格式读取此xml »¿<localAttributes> <start>2017-09-07</start> <runAs>true</runAs> <makeVersion>1</makeVersion> /localAttributes>

我想读取config.xml文件,但多个处理器可以同时使用此文件,为了防止此操作,我需要使用fileLock,我使用此代码读取xml,但格式不正确,如下所示 如何以正确的格式读取此xml

»¿<localAttributes>
<start>2017-09-07</start>
<runAs>true</runAs>
<makeVersion>1</makeVersion>
/localAttributes>

您的文件保存在UTF-8中,带有可选的字节顺序标记(BOM),显示它是UTF-8。但是您使用默认的系统字符集来读取它。在您的情况下,您可以在默认编码为ISO-8859-1的Windows上执行此操作,这将导致BOM表被解码为两个字符

虽然您的代码一点也不像Groovy,但如果您坚持使用
RandomAccessFile
读取文件,则需要使用
读取器来指定编码,例如。G差不多

new BufferedReader(Channels.newReader(ini.getChannel(), "UTF-8")).readLine()

您的文件保存在UTF-8中,带有可选的字节顺序标记(BOM),显示它是UTF-8。但是您使用默认的系统字符集来读取它。在您的情况下,您可以在默认编码为ISO-8859-1的Windows上执行此操作,这将导致BOM表被解码为两个字符

虽然您的代码一点也不像Groovy,但如果您坚持使用
RandomAccessFile
读取文件,则需要使用
读取器来指定编码,例如。G差不多

new BufferedReader(Channels.newReader(ini.getChannel(), "UTF-8")).readLine()

“以正确的格式读取xml文件”是什么意思?它是一个文本文件,而且你似乎毕竟是以文本的形式读取它,那么为什么这不是一种正确的格式呢?我的意思是,如果它在你的文件中,你应该修复该文件,而不是你的程序。在这种情况下,你应该查看你的文件编码,并在读取它时使用正确的编码。你说的是什么“以正确的格式读取xml文件"? 它是一个文本文件,而且你似乎毕竟是以文本的形式读取它,那么为什么格式不正确呢?我的意思是,如果它在你的文件中,你应该修复文件,而不是你的程序。在这种情况下,您应该查看您的文件编码,并在读取时使用正确的编码。我的代码是groovy,但我想在其中实现这个逻辑,因为我知道我可以在groovy中使用任何东西(用java实现),您认为我应该在groovy代码中使用另一种方式吗?不,您的代码是Java,也可以在Groovy下运行,但e。G这将更加groovy,并取代所有的阅读代码,包括我对代码的修复,因为相应的groovy代码包含识别BOM的编码检测:
def content=new File(/C:\Users\user\Desktop\try2\nifi-1.3.0\1/)。text
我想使用文件锁,groovy中java支持的线程睡眠和相关实现这就是为什么我接受了yoor的第一个答案,因为它很有用,我知道它def content=new File(C://Users//user//Desktop//try2//nifi-1.3.0//1).getText(),但我想我不能对它使用文件锁。这就是为什么我不使用groovy逻辑,顺便问一下,groovy中是否有文件锁和Thread.sleep的本机实现?我的代码是groovy,但我想在其中实现这个逻辑,因为我知道我可以使用任何东西(用java实现)在groovy中,您认为我应该在groovy代码中使用另一种方式吗?不,您的代码是Java,也可以在groovy下运行,但是e。G这将更加groovy,并取代所有的阅读代码,包括我对代码的修复,因为相应的groovy代码包含识别BOM的编码检测:
def content=new File(/C:\Users\user\Desktop\try2\nifi-1.3.0\1/)。text
我想使用文件锁,groovy中java支持的线程睡眠和相关实现这就是为什么我接受了yoor的第一个答案,因为它很有用,我知道它def content=new File(C://Users//user//Desktop//try2//nifi-1.3.0//1).getText(),但我想我不能对它使用文件锁。这就是我不使用groovy逻辑的原因,顺便问一下,groovy中是否有文件锁和Thread.sleep的本机实现?