Читать можно используя ресурсы:
getClass().getResource("/com/myorg/foo.txt"))
или
getClass().getClassLoader().getResource("com/myorg/foo.txt")
Источник:
https://stackoverflow.com/questions/941754/how-to-get-a-path-to-a-resource-in-a-java-jar-file/14612564С записью сложнее. Это плохая практика. Изменяемые данные лучше хранить в отдельном файле. Возможно, jar-файл блокируется, когда программа работает (я не проверял).
JAR-файл - это обычный zip-архив. В Java есть классы для работы с zip. Но нельзя изменить файл в архиве, можно только создать новый архив с изменённым файлом.