# Plug-in cannot read or write files

**URL:** <https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588>\
**Category:** Elasticsearch\
**Created:** [February 15, 2025, 1:19pm UTC](https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588 "2025-02-15T13:19:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lgjut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lgjut/32/141400_2.png) [@lgjut](https://discuss.elastic.co/u/lgjut)\
**Post date:** [February 15, 2025, 1:19pm UTC](https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588/1 "2025-02-15T13:19:14Z")

</div>

When developing a text analysis plug-in, need to read and write dic directory:

```auto
package com.lietu.bigramSeg;

import org.apache.lucene.analysis.Tokenizer;
import org.elasticsearch.plugin.analysis.TokenizerFactory;
import org.apache.lucene.util.AttributeFactory;
import org.elasticsearch.plugin.NamedComponent;

@NamedComponent(value = "cn_tokenizer")
public class BigramTokenizerFactory implements TokenizerFactory {

	@Override
	public Tokenizer create() {
		AttributeFactory factory = AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY;
		String dicPath = "./dic/";
		BigramDictioanryPrev dict = BigramDictioanryPrev.getInstance(dicPath);
		return new NgramTokenizer(factory, dict);
	}

}

```

When using this plug-in, elasticsearch output error:

```auto
[2025-02-05T14:17:53,025][WARN][stderr] [DESKTOP-GS2A859] java.security.AccessControlException: access denied ("java.io.FilePermission" ".\dic\ArrayNodeInfofile.dat" "read")

```

---

<div class="post-metadata">

**Author:** ![TimV](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/timv/32/13162_2.png) [@TimV](https://discuss.elastic.co/u/TimV)\
**Post date:** [February 17, 2025, 3:58am UTC](https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588/2 "2025-02-17T03:58:39Z")

</div>

That's due to the Security Manager.

You need to include a plugin security policy, and you may need to wrap the call in a `doPrivileged` block

- [Creating classic plugins | Elasticsearch Plugins and Integrations [8.17] | Elastic](https://www.elastic.co/guide/en/elasticsearch/plugins/current/creating-classic-plugins.html#plugin-authors-jsm)

---

<div class="post-metadata">

**Author:** ![lgjut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lgjut/32/141400_2.png) [@lgjut](https://discuss.elastic.co/u/lgjut)\
**Post date:** [February 17, 2025, 12:08pm UTC](https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588/3 "2025-02-17T12:08:50Z")

</div>

Is there a code example of read and write files?

---

<div class="post-metadata">

**Author:** ![lgjut](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lgjut/32/141400_2.png) [@lgjut](https://discuss.elastic.co/u/lgjut)\
**Post date:** [February 18, 2025, 12:33pm UTC](https://discuss.elastic.co/t/plug-in-cannot-read-or-write-files/374588/4 "2025-02-18T12:33:35Z")

</div>

When I try to add the following code:

```auto
AccessController.doPrivileged(
  // sensitive operation
);

```

IDE report error: 'java.security.AccessController' is deprecated since version 17 and marked for removal
