* EDIT: я написал статью о том, как это сделать https://medium.com/riow/mongodb-data-collection-change-85b63d96ff76
Это новое в mongodb 3.6 https://docs.mongodb.com/manual/release-notes/3.6/ 2018/01/10
$ mongod --version
db version v3.6.2
Для использования changeStreams база данных должна быть набором репликации
Подробнее о наборах репликации: https: // docs .mongodb.com / manual / replication /
blockquote>По умолчанию ваша база данных будет «Автономной».
Как преобразовать автономный набор реплик: https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/ ]
blockquote>Следующий пример представляет собой практическое приложение для использования этого. * В частности, для узла.
/* file.js */ 'use strict' module.exports = function ( app, io, User // Collection Name ) { // SET WATCH ON COLLECTION const changeStream = User.watch(); // Socket Connection io.on('connection', function (socket) { console.log('Connection!'); // USERS - Change changeStream.on('change', function(change) { console.log('COLLECTION CHANGED'); User.find({}, (err, data) => { if (err) throw err; if (data) { // RESEND ALL USERS socket.emit('users', data); } }); }); }); }; /* END - file.js */
Полезные ссылки: https://docs.mongodb.com/manual/tutorial/convert-standalone-to -replica-set https://docs.mongodb.com/manual/tutorial/change-streams-example
https: // docs. mongodb.com/v3.6/tutorial/change-streams-example http://plusnconsulting.com/post/MongoDB-Change-Streams
Решение № 1 (рекомендуется для небольших файлов, но вы имеете преимущество в том, что файл будет найден и на других компьютерах): Как загрузить файл из папки ресурсов?
Решение № 2: Построить путь шаг за шагом, используя конструктор File(String parent, String child)
. Пример:
File desktop = new File(System.getProperty("user.home"),"Desktop");
File textsFolder = new File(desktop,"texts");
File testsFolder = new File(textsFolder,"tests");
File peopleTxt = new File(testsFolder,"people,txt");
Что равно: C: //Users//George//Desktop//texts//tests//people.txt (ОС Windows).
Согласно коду,
PrintWriter outputFile = new PrintWriter("Values.txt");
, если вы поместите свой Values.txt
в каталог current / project, т.е. в папку Arrays
, он должен работать, но есть ограничения, как упомянуто в вышеупомянутые комментарии, такие как запись в файл, который является частью JarFile.
В зависимости от вашей цели, вы должны предпринять действия.
В вашем примере «Values.txt» - это относительный путь. Это относительно вашего рабочего каталога .
Обычно это тот же каталог, где находится ваш JAR-файл.
В Eclipse приложение встроено в папку «bin». В вашем случае это Arrays\bin\
. Так что это рабочий каталог для приложения, и ваш файл должен быть там.
Если вы хотите, чтобы Eclipse экспортировал этот файл во время процесса сборки, сделайте следующее:
Щелкните правой кнопкой мыши файл -> Путь сборки -> Добавить в путь сборки
blockquote >