como pegar texto de um JtextField e executar no dos?
Segue um link com instruções sobre como rodar um comando a partir de um código Java: http://www.java-tips.org/java-se-tips/java.lang/how-to-execute-a-command-from-code.html
A diferença é que o String command deverá receber o texto do JTextField:
String command = jtextfieldComandos.getText();
Obrigado,vlw!
ima pergunta.:
devo substituir por
String command = "ls";
ou
[code]String[] commands = new String[]{“grep”, “hello world”, “/tmp/f.txt”};
commands = new String[]{"grep", "hello world",
"c:\\Documents and Settings\\f.txt"};[/code]
[quote=progJava]ima pergunta.:
devo substituir por
String command = "ls";
ou
[code]String[] commands = new String[]{“grep”, “hello world”, “/tmp/f.txt”};
commands = new String[]{"grep", "hello world",
"c:\\Documents and Settings\\f.txt"};[/code][/quote]
utilizei o comando para deletar um arquivo txt mais nada de func.
[code]try {
// Execute a command without arguments
String command = “aas.txd”;
Process child = Runtime.getRuntime().exec(command);
// Execute a command with an argument
command = "C:/>del c:/a/aas.txt ";
child = Runtime.getRuntime().exec(command);
} catch (IOException e) {
}[/code]
sera que tenho que configurar o exe ou o compilador pelo Dos?
Cara, eu tenho um programa que faz essas chamadas, mas não está comigo agora e não me lembro de cabeça como eu fazia isso…
Acho que têm que por a primeira instrução como “cmd.exe” para iniciar o dos. E depois as demais… mas só testando para saber…
Para excluir arquivos, há um jeito mais simples que esse que você está tentando
java.io.File file = new java.io.File( "arquivo.txt" );
file.delete();
um dos objetivos era utilizar o dos para copiar arquivos Ex pastas e seus arquivos ,mas como não consegui , talves execuntado comando pelo dos conseguiria copiar esses arquivos atraves do meu sistema.
Tente usar linhas de comando do DOS somente se não tiver outro jeito… Têm alguma coisa que está faltando, mas não sei dizer agora o que é…
Para cópia de arquivos, você pode usar essa classe:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class CopiaArquivos {
/**
* Copia arquivos de um local para o outro.
* @param origem - Arquivo de origem
* @param destino - Arquivo de destino
* @param overwrite - Confirmação para sobrescrever os arquivos
* @throws IOException
*/
public static void copy(File origem, File destino, boolean overwrite) throws IOException {
if (destino.exists() && !overwrite) {
return;
}
FileInputStream source = new FileInputStream(origem);
FileOutputStream destination = new FileOutputStream(destino);
FileChannel sourceFileChannel = source.getChannel();
FileChannel destinationFileChannel = destination.getChannel();
long size = sourceFileChannel.size();
sourceFileChannel.transferTo(0, size, destinationFileChannel);
}
/**
* Copia todos os arquivos que tenham uma determinada extensão de uma pasta de origem para outra de destino.
* @param origem - Diretório onde estão os arquivos a serem copiados
* @param destino - Diretório onde os arquivos serão copiados
* @param extensao - <i>String</i> Extensão do arquivo que deve ser copiada. Você pode inserir a extensão no formato: ".doc" ou "doc" (por exemplo)
* @param overwrite - Confirmação para sobrescrever os arquivos
* @throws IOException, UnsupportedOperationException
*/
public static void copyAll(File origem, File destino, String extensao, boolean overwrite) throws IOException, UnsupportedOperationException {
if (!destino.exists()) {
destino.mkdir();
}
if (!origem.isDirectory()) {
throw new UnsupportedOperationException("Origem deve ser um diretório");
}
if (!destino.isDirectory()) {
throw new UnsupportedOperationException("Destino deve ser um diretório");
}
File[] files = origem.listFiles();
for (int i = 0; i < files.length; ++i) {
if (files[i].isDirectory()) {
copyAll(files[i], new File(destino + "\\" + files[i].getName()), overwrite);
} else {
if (files[i].getName().endsWith(extensao)) {
copy(files[i], new File(destino + "\\" + files[i].getName()), overwrite);
}
}
}
}
/**
* Copia todos os arquivos de dentro de uma pasta para outra.
* @param origem - Diretório onde estão os arquivos a serem copiados
* @param destino - Diretório onde os arquivos serão copiados
* @param overwrite - Confirmação para sobrescrever os arquivos
* @throws IOException, UnsupportedOperationException
*/
public static void copyAll(File origem, File destino, boolean overwrite) throws IOException, UnsupportedOperationException {
if (!destino.exists()) {
destino.mkdir();
}
if (!origem.isDirectory()) {
throw new UnsupportedOperationException("Origem deve ser um diretório");
}
if (!destino.isDirectory()) {
throw new UnsupportedOperationException("Destino deve ser um diretório");
}
File[] files = origem.listFiles();
for (int i = 0; i < files.length; ++i) {
if (files[i].isDirectory()) {
copyAll(files[i], new File(destino + "\\" + files[i].getName()), overwrite);
} else {
System.out.println("Copiando arquivo: " + files[i].getName());
copy(files[i], new File(destino + "\\" + files[i].getName()), overwrite);
}
}
}
/**
* Copia arquivos de um local para o outro
* *** Versão antiga - substitui esse método pelo uso da classe FileChannel - mas há a opção de usar essa versão ***
*/
/*
public static void copy_versaoantiga(File origem, File destino, boolean overwrite) throws IOException {
if (destino.exists() && !overwrite) {
return;
}
final int BUFFER_SIZE = 1 * 1024 * 1024;
BufferedReader in = null;
BufferedWriter out = null;
try {
in = new BufferedReader(new FileReader(origem), BUFFER_SIZE);
out = new BufferedWriter(new FileWriter(destino), BUFFER_SIZE);
String line;
while ((line = in.readLine()) != null) {
out.write(line);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
*/
}
cara funcionou legal , só um probleminha ele copia varias vezes . chameu o segundo coloquei para
parametros.:
a,b,true
Eu testei aqui e funcionou… copiou a estrutura de diretórios e arquivos inteira.
A função é chamada recursivamente toda vez que acha um subdiretório - e já cria um subdiretório “espelho”. Executa várias vezes, para cada subdiretório que encontrar.
Não localizei inconsistências aqui.
Você pode ver que ele “printou” todos os arquivos que copiou. Não há arquivos repetidos - só haverá se houver o arquivo repetido dentro de subdiretórios.
No teste que fiz, há poucas repetições na cópia:
Copiando arquivo: GerenciadorRelatorios.exe
Copiando arquivo: GerenciadorRelatorios.pdb
Copiando arquivo: GerenciadorRelatorios.vshost.exe
Copiando arquivo: Form1.cs
Copiando arquivo: Form1.Designer.cs
Copiando arquivo: Form1.resx
Copiando arquivo: GerenciadorRelatorios.csproj
Copiando arquivo: GerenciadorRelatorios.csproj.user
Copiando arquivo: GravaExcel.cs
Copiando arquivo: DesignTimeResolveAssemblyReferencesInput.cache
Copiando arquivo: GenerateResource.read.1.tlog
Copiando arquivo: GenerateResource.write.1.tlog
Copiando arquivo: GerenciadorRelatorios.csproj.FileListAbsolute.txt
Copiando arquivo: GerenciadorRelatorios.csproj.ResolveComReference.cache
Copiando arquivo: GerenciadorRelatorios.exe
Copiando arquivo: GerenciadorRelatorios.Form1.resources
Copiando arquivo: GerenciadorRelatorios.pdb
Copiando arquivo: GerenciadorRelatorios.Properties.Resources.resources
Copiando arquivo: Program.cs
Copiando arquivo: AssemblyInfo.cs
Copiando arquivo: Resources.Designer.cs
Copiando arquivo: Resources.resx
Copiando arquivo: Settings.Designer.cs
Copiando arquivo: Settings.settings
Copiando arquivo: GerenciadorRelatorios.sln
Copiando arquivo: GerenciadorRelatorios.suo
Mas isso porquê os únicos que aparecem repetidos (2 arquivos) da listagem acima estão com o mesmo nome em subdiretórios diferentes. Ou seja há cópias do mesmo arquivo no subdiretório.
Bom, você também pode alterar a classe conforme suas necessidades. Para mim, está cumprindo bem sua finalidade.
coloquei o parametro como false e funcionou muito bel Vlw.thanks.
O parâmetro overwrite depende do jeito que você quer usar:
-Se quer salvar por cima dos arquivos da pasta destino, deixe como true;
-Se quer manter os arquivos que já existem na pasta destino (e que sejam iguais da pasta origem), deixe como false;
Flw
Blz,vlw.