Exemple #1
0
def touch(arquivo):
    if arquivo is None:
        print('touch precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_arquivo = pega_dados(arquivo)
    except FileNotFoundError:
        return
    if dados.tem(nome_arquivo):
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        if dados.is_dir():
            print('É um diretório!')
            return
        dados.get_dado()  # com o get_dado eu estou atualizando o instante de acesso
        dados.save(unidade)
    else:
        index = aloca()
        dados.add_entry(nome_arquivo, index)
        dados.save(unidade)
        dados = Dados(bitmap, fat, index)
        dados.set(nome_arquivo, '')
        dados.save(unidade)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
    pass
Exemple #2
0
def touch(arquivo):
    if arquivo is None:
        print('touch precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_arquivo = pega_dados(arquivo)
    except FileNotFoundError:
        return
    if dados.tem(nome_arquivo):
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        if dados.is_dir():
            print('É um diretório!')
            return
        dados.get_dado(
        )  # com o get_dado eu estou atualizando o instante de acesso
        dados.save(unidade)
    else:
        index = aloca()
        dados.add_entry(nome_arquivo, index)
        dados.save(unidade)
        dados = Dados(bitmap, fat, index)
        dados.set(nome_arquivo, '')
        dados.save(unidade)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
    pass
Exemple #3
0
def find(diretorio, arquivo):
    if diretorio is None or arquivo is None:
        print('find precisa de dois argumentos')
        return
    dados, caminho_destino, diretorio = pega_dados(diretorio)
    if diretorio is not None:
        if not dados.tem(diretorio):
            print('Diretório não encontrado')
            return
        index = dados.get_entry(diretorio)
        dados = Dados(bitmap, fat, index)
        dados.carrega_cabeçalho(unidade)
        if not dados.is_dir():
            print('Não é um diretório')
            return
        dados.load(unidade)
        find_recursive(dados, caminho_destino + [diretorio], arquivo)
    else:
        for nome_arquivo in dados.keys():
            index = dados.get_entry(nome_arquivo)
            a = Dados(bitmap, fat, index)
            a.carrega_cabeçalho(unidade)
            if a.is_dir():
                a.load(unidade)
                find_recursive(a, caminho_destino + [nome_arquivo], arquivo)
            else:
                if a.get_nome() == arquivo:
                    print(
                        '/' + '/'.join(caminho_destino) + '/' + arquivo if type(dados) is not Root else '/'.join(
                            caminho_destino) + '/' + arquivo)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
Exemple #4
0
def find(diretorio, arquivo):
    if diretorio is None or arquivo is None:
        print('find precisa de dois argumentos')
        return
    dados, caminho_destino, diretorio = pega_dados(diretorio)
    if diretorio is not None:
        if not dados.tem(diretorio):
            print('Diretório não encontrado')
            return
        index = dados.get_entry(diretorio)
        dados = Dados(bitmap, fat, index)
        dados.carrega_cabeçalho(unidade)
        if not dados.is_dir():
            print('Não é um diretório')
            return
        dados.load(unidade)
        find_recursive(dados, caminho_destino + [diretorio], arquivo)
    else:
        for nome_arquivo in dados.keys():
            index = dados.get_entry(nome_arquivo)
            a = Dados(bitmap, fat, index)
            a.carrega_cabeçalho(unidade)
            if a.is_dir():
                a.load(unidade)
                find_recursive(a, caminho_destino + [nome_arquivo], arquivo)
            else:
                if a.get_nome() == arquivo:
                    print('/' + '/'.join(caminho_destino) + '/' +
                          arquivo if type(dados) is not Root else
                          '/'.join(caminho_destino) + '/' + arquivo)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
Exemple #5
0
def faça_ls(dados):
    for nome in dados.keys():
        index = dados.get_entry(nome)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if arquivo.is_dir():
            print(arquivo.get_nome(), '/', sep='')
            print(arquivo.modify)
        else:
            print(arquivo.get_nome())
            print(arquivo.tamanho)
            print(arquivo.modify)
Exemple #6
0
def rmdir_recursivo(index, caminho):
    dados = Dados(bitmap, fat, index)
    dados.carrega_cabeçalho(unidade)
    if dados.is_dir():
        dados.load(unidade)
        for arquivos in dados.keys():
            index = dados.get_entry(arquivos)
            rmdir_recursivo(index, caminho + [arquivos])
    print('/' + '/'.join(caminho) + '/' + dados.get_nome())
    while index != -1:
        bitmap.set_1(index)
        index = fat.get(index)
Exemple #7
0
def rmdir_recursivo(index, caminho):
    dados = Dados(bitmap, fat, index)
    dados.carrega_cabeçalho(unidade)
    if dados.is_dir():
        dados.load(unidade)
        for arquivos in dados.keys():
            index = dados.get_entry(arquivos)
            rmdir_recursivo(index, caminho + [arquivos])
    print('/' + '/'.join(caminho) + '/' + dados.get_nome())
    while index != -1:
        bitmap.set_1(index)
        index = fat.get(index)
Exemple #8
0
def faça_ls(dados):
    for nome in dados.keys():
        index = dados.get_entry(nome)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if arquivo.is_dir():
            print(arquivo.get_nome(), '/', sep='')
            print(arquivo.modify)
        else:
            print(arquivo.get_nome())
            print(arquivo.tamanho)
            print(arquivo.modify)
Exemple #9
0
def find_recursive(dados, caminho_destino, arquivo_procurado):
    for nome_arquivo in dados.keys():
        index = dados.get_entry(nome_arquivo)
        arquivo = Dados(bitmap, fat, index)
        arquivo.carrega_cabeçalho(unidade)
        if arquivo.is_dir():
            arquivo.load(unidade)
            find_recursive(arquivo, caminho_destino + [nome_arquivo], arquivo_procurado)
        else:
            if arquivo.get_nome() == arquivo_procurado:
                print(
                    '/' + '/'.join(caminho_destino) + '/' + arquivo_procurado if type(dados) is not Root else '/'.join(
                        caminho_destino) + '/' + arquivo_procurado)
Exemple #10
0
def find_recursive(dados, caminho_destino, arquivo_procurado):
    for nome_arquivo in dados.keys():
        index = dados.get_entry(nome_arquivo)
        arquivo = Dados(bitmap, fat, index)
        arquivo.carrega_cabeçalho(unidade)
        if arquivo.is_dir():
            arquivo.load(unidade)
            find_recursive(arquivo, caminho_destino + [nome_arquivo],
                           arquivo_procurado)
        else:
            if arquivo.get_nome() == arquivo_procurado:
                print('/' + '/'.join(caminho_destino) + '/' +
                      arquivo_procurado if type(dados) is not Root else
                      '/'.join(caminho_destino) + '/' + arquivo_procurado)
Exemple #11
0
def percorre_caminho(caminho_destino):
    if len(caminho_destino) == 0:
        return root
    nome_diretorio = caminho_destino.pop(0)
    index = root.get_entry(nome_diretorio)
    while len(caminho_destino):
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        if not dados.is_dir():
            print('Não é um diretório')
            raise NotADirectoryError
        index = dados.get_entry(caminho_destino.pop(0))
    dados = Dados(bitmap, fat, index)
    dados.load(unidade)
    return dados
Exemple #12
0
def percorre_caminho(caminho_destino):
    if len(caminho_destino) == 0:
        return root
    nome_diretorio = caminho_destino.pop(0)
    index = root.get_entry(nome_diretorio)
    while len(caminho_destino):
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        if not dados.is_dir():
            print('Não é um diretório')
            raise NotADirectoryError
        index = dados.get_entry(caminho_destino.pop(0))
    dados = Dados(bitmap, fat, index)
    dados.load(unidade)
    return dados
Exemple #13
0
def cat(arquivo):
    if arquivo is None:
        print('cat precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_arquivo = pega_dados(arquivo)
    except FileNotFoundError:
        return
    if dados.tem(nome_arquivo):
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        print(dados.get_dado())
        dados.save(unidade)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
    pass
Exemple #14
0
def cat(arquivo):
    if arquivo is None:
        print('cat precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_arquivo = pega_dados(arquivo)
    except FileNotFoundError:
        return
    if dados.tem(nome_arquivo):
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.load(unidade)
        print(dados.get_dado())
        dados.save(unidade)
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
    pass
Exemple #15
0
def df():
    quantidade_diretórios = 1
    quantidade_arquivos = 0
    espaço_livre = 99940000
    espaço_desperdiçado = 224  # 224 B desperdiçado nos metadados
    pilha = []

    # Tratamento especial para o root
    for nome_arquivo in root.keys():
        index = root.get_entry(nome_arquivo)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if arquivo.is_dir():
            quantidade_diretórios += 1
            # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes
            espaço_desperdiçado += 4000 - arquivo.get_len_tabela() * 257 - 328
            pilha.append(arquivo)
        else:
            quantidade_arquivos += 1
            espaço_desperdiçado += 4000 - arquivo.get_tamanho(
            ) - 332  # 332 bytes para o cabeçalho do diretório
        espaço_livre -= 4000

    while len(pilha):
        dado = pilha.pop()
        for nome_arquivo in dado.keys():
            index = dado.get_entry(nome_arquivo)
            arquivo = Dados(bitmap, fat, index)
            arquivo.load(unidade)
            if arquivo.is_dir():
                quantidade_diretórios += 1
                # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes
                espaço_desperdiçado += 4000 - dado.get_len_tabela() * 257 - 328
                pilha.append(arquivo)
            else:
                quantidade_arquivos += 1
                espaço_desperdiçado += 4000 - dado.get_tamanho(
                ) - 332  # 332 bytes para o cabeçalho do diretório
            espaço_livre -= 4000
    print('quantidade diretórios:', quantidade_diretórios)
    print('quantidade arquivos:', quantidade_arquivos)
    print('espaço livre:', espaço_livre)
    print('espaço desperdiçado:',
          espaço_desperdiçado)  # 224 B desperdiçado nos metadados)
Exemple #16
0
def ls(diretorio):
    if diretorio is None:
        print('ls precisa de um argumento')
        return
    dados, caminho_destino, nome_arquivo = pega_dados(diretorio)
    if nome_arquivo is None:
        faça_ls(dados)
    else:
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.carrega_cabeçalho(unidade)
        if dados.is_dir():
            dados.load(unidade)
            faça_ls(dados)
        else:
            print('É um arquivo.')
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
Exemple #17
0
def ls(diretorio):
    if diretorio is None:
        print('ls precisa de um argumento')
        return
    dados, caminho_destino, nome_arquivo = pega_dados(diretorio)
    if nome_arquivo is None:
        faça_ls(dados)
    else:
        index = dados.get_entry(nome_arquivo)
        dados = Dados(bitmap, fat, index)
        dados.carrega_cabeçalho(unidade)
        if dados.is_dir():
            dados.load(unidade)
            faça_ls(dados)
        else:
            print('É um arquivo.')
    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
Exemple #18
0
def df():
    quantidade_diretórios = 1
    quantidade_arquivos = 0
    espaço_livre = 99940000
    espaço_desperdiçado = 224  # 224 B desperdiçado nos metadados
    pilha = []

    # Tratamento especial para o root
    for nome_arquivo in root.keys():
        index = root.get_entry(nome_arquivo)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if arquivo.is_dir():
            quantidade_diretórios += 1
            # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes
            espaço_desperdiçado += 4000 - arquivo.get_len_tabela() * 257 - 328
            pilha.append(arquivo)
        else:
            quantidade_arquivos += 1
            espaço_desperdiçado += 4000 - arquivo.get_tamanho() - 332  # 332 bytes para o cabeçalho do diretório
        espaço_livre -= 4000

    while len(pilha):
        dado = pilha.pop()
        for nome_arquivo in dado.keys():
            index = dado.get_entry(nome_arquivo)
            arquivo = Dados(bitmap, fat, index)
            arquivo.load(unidade)
            if arquivo.is_dir():
                quantidade_diretórios += 1
                # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes
                espaço_desperdiçado += 4000 - dado.get_len_tabela() * 257 - 328
                pilha.append(arquivo)
            else:
                quantidade_arquivos += 1
                espaço_desperdiçado += 4000 - dado.get_tamanho() - 332  # 332 bytes para o cabeçalho do diretório
            espaço_livre -= 4000
    print('quantidade diretórios:', quantidade_diretórios)
    print('quantidade arquivos:', quantidade_arquivos)
    print('espaço livre:', espaço_livre)
    print('espaço desperdiçado:', espaço_desperdiçado)  # 224 B desperdiçado nos metadados)
Exemple #19
0
def rmdir(diretorio):
    if diretorio is None:
        print('rmdir precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_diretorio = pega_dados(diretorio)
    except FileNotFoundError:
        return
    if dados.tem(nome_diretorio):
        index = dados.get_entry(nome_diretorio)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if not arquivo.is_dir():
            print('Não é diretório')
            return
        dados.del_entry(nome_diretorio)
        dados.save(unidade)
        for arquivos in arquivo.keys():
            index = arquivo.get_entry(arquivos)
            dado = Dados(bitmap, fat, index)
            dado.load(unidade)
            if dado.is_dir():
                rmdir_recursivo(index, caminho_destino + [nome_diretorio])
            else:
                while index != -1:
                    bitmap.set_1(index)
                    index = fat.get(index)
        print(nome_diretorio,
              '%s removido%s com sucesso' % ('foram', 's') if len(dados.keys())
              else '%s removido%s com sucesso' % ('foi', ''))
    else:
        print('Diretório %s não existe' % nome_diretorio)

    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)
Exemple #20
0
def rmdir(diretorio):
    if diretorio is None:
        print('rmdir precisa de um argumento')
        return
    try:
        dados, caminho_destino, nome_diretorio = pega_dados(diretorio)
    except FileNotFoundError:
        return
    if dados.tem(nome_diretorio):
        index = dados.get_entry(nome_diretorio)
        arquivo = Dados(bitmap, fat, index)
        arquivo.load(unidade)
        if not arquivo.is_dir():
            print('Não é diretório')
            return
        dados.del_entry(nome_diretorio)
        dados.save(unidade)
        for arquivos in arquivo.keys():
            index = arquivo.get_entry(arquivos)
            dado = Dados(bitmap, fat, index)
            dado.load(unidade)
            if dado.is_dir():
                rmdir_recursivo(index, caminho_destino + [nome_diretorio])
            else:
                while index != -1:
                    bitmap.set_1(index)
                    index = fat.get(index)
        print(
            nome_diretorio, '%s removido%s com sucesso' % ('foram', 's') if
            len(dados.keys()) else '%s removido%s com sucesso' % ('foi', ''))
    else:
        print('Diretório %s não existe' % nome_diretorio)

    bitmap.save(unidade)
    fat.save(unidade)
    root.save(unidade)