Процесс не может найти правильное расположение файла

Я создал программы на C ++, в задачу которых входит резервное копирование и восстановление базы данных в MySQL. Эти программы на C ++ используют две папки, а именно: readerCode а также saves, readerCode содержит текстовые файлы (или сценарии), которые содержат команду в MySQL. saves папка, в которой хранится резервная копия. Я сохранил программы и папки в C:\AwesomeDatabase\ext,

Когда я запускаю программы через cmd, команда запускается успешно. Он создает файл .sql в папке сохранения. Но когда я запускаю его через свою Java-программу с помощью компоновщика процессов, java-программа может запускать исполняемые программы (для резервного копирования и восстановления), но программы C ++ не могут найти файл, который нужно найти. Заранее спасибо!

Фрагмент кода из Process.java

private void menuItemBackupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String cmd [] = {"\"C:\\AwesomeDatabase\\ext\\DBBackup.exe\"", "-d"};
ProcessBuilder builder = new ProcessBuilder ("\"C:\\AwesomeDatabase\\ext\\DBBackup.exe\"", "-d");
builder.redirectErrorStream (true);
Process p = builder.start();
java.io.BufferedReader r = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
} catch (java.io.IOException ioe) {
System.err.println ("Fatal Error! Back up file not found!\n" + ioe);
}

}

Да, так Java начнет процесс, когда menuItemBackup нажата. Так вот мой DBBackup.cpp

#include <iostream>
#include <cstdlib>
#include <cstring>

#include "backup_head.h"
using namespace std;

//void secureBackup (void);
void normalBackup (void);

int
main (int argc, char *argv[])
{

if (argc > 1) {
if (strcmp (argv [1], "-s") == false) {
//secureBackup();
} else if (strcmp (argv [1], "-d") == false) {
normalBackup();
} else {
cout << "Invalid Command Line Arguments!" << endl;
Sleep (500);
}
} else {
cout << "Invalid Process Spawn!" << endl;
Sleep (500);
}

return (0);
}

void
normalBackup (void)
{

/* Fetch Location Variables */
Program_Path        progpath    =   "";
Change_Directory    cd          =   "CD";

/* Back Up Variables */
Program_Name    progdump    =   "mysqldump";
Database_Name   dbname      =   "sampledb";
Directory_Name  dirName     =   "saves";
Dump_Name       dumpName    =   "BackUpNow";
Username        username    =   "root";
Password        password    =   "root";

/* Delete Old Back Up */
Command         delCommand  =   "DEL";
File_Name       file        =   "DBBackUp";
File_Directory  fileDir     =   "saves";

/* Commands */
_getcwd (progpath, sizeof (progpath));
_chdir (progpath);
SetCurrentDirectory (progpath);
Command redir = cd + " " + "\"" + string(progpath) + "\"";
Command backup = progdump + " " + "-u " + username + " " + "-p" + password + " " + dbname + " > " + dirName + "/" + dumpName + ".sql";
Command delOld = delCommand + " \"" + fileDir + "/" + file + ".sql\"";

cout << "Back Up process is on-going..." << endl << "Please wait for a moment..." << endl;
Sleep (500);
system (redir.c_str());
system (delOld.c_str());
system (backup.c_str());
cout << "Back Up Completed Successfully!";
Sleep (500);

return;
}

Program_Path это определение типа char [99], Остальные «странные» типы данных — это просто строки (я использовал typedef им определить, какая переменная должна использоваться в конкретном случае). Моя Java-программа будет работать на NetBeans Projects папка на Documents папка. Когда я запускаю свой проект в NetBeans, это будет вывод:

Back Up process is on-going...
Please wait for a moment...
The system cannot find the path specified.
The system cannot find the path specified.
Back Up Completed Successfully!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]