2015-04-13 2 views
1

В настоящее время я работаю над Gitlet, которая является системой управления версиями, созданной по образцу Git. В настоящее время мои коммиты хранятся в папках, каждый из которых имеет свой идентификатор фиксации в качестве имени папки. Каждый файл должен быть «унаследован» для следующего коммита, если он не был изменен, но я не могу скопировать содержимое предыдущей фиксации в новую фиксацию, чтобы сэкономить место. Я нахожу это наследование, сохраняя файлы (ключи) и их пути (значения) в HashMap. Каждый фиксатор имеет свой собственный HashMap с собственными унаследованными файлами. Когда пользователь добавляет файл, на данный момент я только что обнаружил, что я только принимаю во внимание тот случай, когда пользователь пользователя находится в каталоге, в котором находится файл. Я не принимая во внимание, является ли пользователь из каталога, что файл его. Это приносит значительную проблему, потому что путь, который получает копируется в HashMap является <folder/folder2/file.txt = commits/3/folder/folder2/file.txt>, когда я на самом деле просто хочу <file.txt = commits/3/file.txt>Путь к файлу Grepping в java

Есть ли «простой» способ, я могу grep это, так что единственные вещи, которые копируются, являются фактическими именами файлов, а не папкой/папкой2?

я в настоящее время копирования файлов, как например:

  try { 
       String path = "./.gitlet/commits/" + commitID; 
       for (String file : stagedQueue) { 

         File temp = new File(path + file); 
         Files.copy((new File(file).toPath()), 
          (new File(path + "/" + file).toPath())); 

       } 


      } catch (IOException e) { //closes try and starts catch 
       e.printStackTrace(); 
      } //closes catch 

Где stagedQueue является HashSet<String>, содержащий файлы, которые были добавлены пользователем, которые будут включены в следующий коммит

+0

Вы не имеете в виду 'grep'. Это даже не близко к тому, что вы хотите здесь. Вы имеете в виду, что хотите только часть файла этого пути? Поэтому трактуем строку как путь и получаем часть файла (у java должны быть функции для этого, я бы себе представлял). –

ответ

1

Я не 100 % то, что вы ищете, но если вы хотите только имя файла, то это:

File().getName(); 
File().getPath(); 

Тогда вы просто должны играть несколько игр, чтобы получить правильный выход р ATH.

Смежные вопросы